Commit de51d6cc authored by Al Viro's avatar Al Viro
Browse files

nios2: switch to RAW_COPY_USER



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 981db65b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ config NIOS2
	select SPARSE_IRQ
	select USB_ARCH_HAS_HCD if USB_SUPPORT
	select CPU_NO_EFFICIENT_FFS
	select ARCH_HAS_RAW_COPY_USER

config GENERIC_CSUM
	def_bool y
+6 −25
Original line number Diff line number Diff line
@@ -73,36 +73,17 @@ static inline unsigned long __must_check clear_user(void __user *to,
	return __clear_user(to, n);
}

extern long __copy_from_user(void *to, const void __user *from,
				unsigned long n);
extern long __copy_to_user(void __user *to, const void *from, unsigned long n);

static inline long copy_from_user(void *to, const void __user *from,
				unsigned long n)
{
	unsigned long res = n;
	if (access_ok(VERIFY_READ, from, n))
		res = __copy_from_user(to, from, n);
	if (unlikely(res))
		memset(to + (n - res), 0, res);
	return res;
}

static inline long copy_to_user(void __user *to, const void *from,
				unsigned long n)
{
	if (!access_ok(VERIFY_WRITE, to, n))
		return n;
	return __copy_to_user(to, from, n);
}
extern unsigned long
raw_copy_from_user(void *to, const void __user *from, unsigned long n);
extern unsigned long
raw_copy_to_user(void __user *to, const void *from, unsigned long n);
#define INLINE_COPY_FROM_USER
#define INLINE_COPY_TO_USER

extern long strncpy_from_user(char *__to, const char __user *__from,
				long __len);
extern long strnlen_user(const char __user *s, long n);

#define __copy_from_user_inatomic	__copy_from_user
#define __copy_to_user_inatomic		__copy_to_user

/* Optimized macros */
#define __get_user_asm(val, insn, addr, err)				\
{									\
+8 −8
Original line number Diff line number Diff line
@@ -10,9 +10,9 @@
#include <linux/export.h>
#include <linux/uaccess.h>

asm(".global	__copy_from_user\n"
	"   .type __copy_from_user, @function\n"
	"__copy_from_user:\n"
asm(".global	raw_copy_from_user\n"
	"   .type raw_copy_from_user, @function\n"
	"raw_copy_from_user:\n"
	"   movi  r2,7\n"
	"   mov   r3,r4\n"
	"   bge   r2,r6,1f\n"
@@ -65,12 +65,12 @@ asm(".global __copy_from_user\n"
	".word 7b,13b\n"
	".previous\n"
	);
EXPORT_SYMBOL(__copy_from_user);
EXPORT_SYMBOL(raw_copy_from_user);

asm(
	"   .global __copy_to_user\n"
	"   .type __copy_to_user, @function\n"
	"__copy_to_user:\n"
	"   .global raw_copy_to_user\n"
	"   .type raw_copy_to_user, @function\n"
	"raw_copy_to_user:\n"
	"   movi  r2,7\n"
	"   mov   r3,r4\n"
	"   bge   r2,r6,1f\n"
@@ -127,7 +127,7 @@ asm(
	".word 11b,13b\n"
	".word 12b,13b\n"
	".previous\n");
EXPORT_SYMBOL(__copy_to_user);
EXPORT_SYMBOL(raw_copy_to_user);

long strncpy_from_user(char *__to, const char __user *__from, long __len)
{