]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
cris: switch to RAW_COPY_USER
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 28 Mar 2017 05:18:37 +0000 (01:18 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 28 Mar 2017 22:23:31 +0000 (18:23 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/cris/Kconfig
arch/cris/include/asm/uaccess.h

index 71b758dc3a96f9a005a4e9da0ed2e7d21826e513..36f94c45e3f9664f79e759b0a4b585afddf6a231 100644 (file)
@@ -71,6 +71,7 @@ config CRIS
        select GENERIC_SCHED_CLOCK if ETRAX_ARCH_V32
        select HAVE_DEBUG_BUGVERBOSE if ETRAX_ARCH_V32
        select HAVE_NMI
+       select ARCH_HAS_RAW_COPY_USER
 
 config HZ
        int
index fc30fdae87869abf33231b26970766645b501ffb..0d473aec3066cad4fd6c25f8cd15e88d947c7a9f 100644 (file)
@@ -336,64 +336,33 @@ static inline size_t clear_user(void __user *to, size_t n)
                return __do_clear_user(to, n);
 }
 
-static inline size_t copy_from_user(void *to, const void __user *from, size_t n)
+static inline unsigned long
+raw_copy_from_user(void *to, const void __user *from, unsigned long n)
 {
-       size_t res = n;
-       if (likely(access_ok(VERIFY_READ, from, n))) {
-               if (__builtin_constant_p(n))
-                       res = __constant_copy_from_user(to, from, n);
-               else
-                       res = __copy_user_in(to, from, n);
-       }
-       if (unlikely(res))
-               memset(to + n - res , 0, res);
-       return res;
+       if (__builtin_constant_p(n))
+               return __constant_copy_from_user(to, from, n);
+       else
+               return __copy_user_in(to, from, n);
 }
 
-static inline size_t copy_to_user(void __user *to, const void *from, size_t n)
+static inline unsigned long
+raw_copy_to_user(void __user *to, const void *from, unsigned long n)
 {
-       if (unlikely(!access_ok(VERIFY_WRITE, to, n)))
-               return n;
        if (__builtin_constant_p(n))
                return __constant_copy_to_user(to, from, n);
        else
                return __copy_user(to, from, n);
 }
 
-/* We let the __ versions of copy_from/to_user inline, because they're often
- * used in fast paths and have only a small space overhead.
- */
-
-static inline unsigned long
-__generic_copy_from_user_nocheck(void *to, const void __user *from,
-                                unsigned long n)
-{
-       return __copy_user_in(to, from, n);
-}
-
-static inline unsigned long
-__generic_copy_to_user_nocheck(void __user *to, const void *from,
-                              unsigned long n)
-{
-       return __copy_user(to, from, n);
-}
+#define INLINE_COPY_FROM_USER
+#define INLINE_COPY_TO_USER
 
 static inline unsigned long
-__generic_clear_user_nocheck(void __user *to, unsigned long n)
+__clear_user(void __user *to, unsigned long n)
 {
        return __do_clear_user(to, n);
 }
 
-/* without checking */
-
-#define __copy_to_user(to, from, n) \
-       __generic_copy_to_user_nocheck((to), (from), (n))
-#define __copy_from_user(to, from, n) \
-       __generic_copy_from_user_nocheck((to), (from), (n))
-#define __copy_to_user_inatomic __copy_to_user
-#define __copy_from_user_inatomic __copy_from_user
-#define __clear_user(to, n) __generic_clear_user_nocheck((to), (n))
-
 #define strlen_user(str)       strnlen_user((str), 0x7ffffffe)
 
 #endif /* _CRIS_UACCESS_H */