arm: switch to RAW_COPY_USER
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 21 Mar 2017 12:23:33 +0000 (08:23 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 28 Mar 2017 22:23:22 +0000 (18:23 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/arm/Kconfig
arch/arm/include/asm/uaccess.h

index 0d4e71b42c77da986a2dc471a1f335be5e958527..6fab7f34739cfb34534d9dba7ab59b6c2bc1e045 100644 (file)
@@ -96,6 +96,7 @@ config ARM
        select PERF_USE_VMALLOC
        select RTC_LIB
        select SYS_SUPPORTS_APM_EMULATION
+       select ARCH_HAS_RAW_COPY_USER
        # Above selects are sorted alphabetically; please add new ones
        # according to that.  Thanks.
        help
index 3a9190bc0ffa36999833f1f863e9be5d5dc4aef3..2577405d082dab01004f13adee7a91398942d399 100644 (file)
@@ -455,7 +455,7 @@ extern unsigned long __must_check
 arm_copy_from_user(void *to, const void __user *from, unsigned long n);
 
 static inline unsigned long __must_check
-__arch_copy_from_user(void *to, const void __user *from, unsigned long n)
+raw_copy_from_user(void *to, const void __user *from, unsigned long n)
 {
        unsigned int __ua_flags;
 
@@ -471,7 +471,7 @@ extern unsigned long __must_check
 __copy_to_user_std(void __user *to, const void *from, unsigned long n);
 
 static inline unsigned long __must_check
-__arch_copy_to_user(void __user *to, const void *from, unsigned long n)
+raw_copy_to_user(void __user *to, const void *from, unsigned long n)
 {
 #ifndef CONFIG_UACCESS_WITH_MEMCPY
        unsigned int __ua_flags;
@@ -499,54 +499,22 @@ __clear_user(void __user *addr, unsigned long n)
 }
 
 #else
-#define __arch_copy_from_user(to, from, n)     \
-                                       (memcpy(to, (void __force *)from, n), 0)
-#define __arch_copy_to_user(to, from, n)       \
-                                       (memcpy((void __force *)to, from, n), 0)
-#define __clear_user(addr, n)          (memset((void __force *)addr, 0, n), 0)
-#endif
-
-static inline unsigned long __must_check
-__copy_from_user(void *to, const void __user *from, unsigned long n)
+static inline unsigned long
+raw_copy_from_user(void *to, const void __user *from, unsigned long n)
 {
-       check_object_size(to, n, false);
-       return __arch_copy_from_user(to, from, n);
-}
-
-static inline unsigned long __must_check
-copy_from_user(void *to, const void __user *from, unsigned long n)
-{
-       unsigned long res = n;
-
-       check_object_size(to, n, false);
-
-       if (likely(access_ok(VERIFY_READ, from, n)))
-               res = __arch_copy_from_user(to, from, n);
-       if (unlikely(res))
-               memset(to + (n - res), 0, res);
-       return res;
-}
-
-static inline unsigned long __must_check
-__copy_to_user(void __user *to, const void *from, unsigned long n)
-{
-       check_object_size(from, n, true);
-
-       return __arch_copy_to_user(to, from, n);
+       memcpy(to, (const void __force *)from, n);
+       return 0;
 }
-
-static inline unsigned long __must_check
-copy_to_user(void __user *to, const void *from, unsigned long n)
+static inline unsigned long
+raw_copy_to_user(void __user *to, const void *from, unsigned long n)
 {
-       check_object_size(from, n, true);
-
-       if (access_ok(VERIFY_WRITE, to, n))
-               n = __arch_copy_to_user(to, from, n);
-       return n;
+       memcpy((void __force *)to, from, n);
+       return 0;
 }
-
-#define __copy_to_user_inatomic __copy_to_user
-#define __copy_from_user_inatomic __copy_from_user
+#define __clear_user(addr, n)          (memset((void __force *)addr, 0, n), 0)
+#endif
+#define INLINE_COPY_TO_USER
+#define INLINE_COPY_FROM_USER
 
 static inline unsigned long __must_check clear_user(void __user *to, unsigned long n)
 {