nios2: switch to RAW_COPY_USER
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 22 Mar 2017 17:08:32 +0000 (13:08 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 28 Mar 2017 22:23:50 +0000 (18:23 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/nios2/Kconfig
arch/nios2/include/asm/uaccess.h
arch/nios2/mm/uaccess.c

index 51a56c8..45b4727 100644 (file)
@@ -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
index ed06750..727bd95 100644 (file)
@@ -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)                           \
 {                                                                      \
index 7663e15..8049833 100644 (file)
@@ -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)
 {