blackfin: no access_ok() for __copy_{to,from}_user()
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 10 Sep 2016 22:53:30 +0000 (18:53 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 15 Sep 2016 23:51:57 +0000 (19:51 -0400)
callers have checked that already

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/blackfin/include/asm/uaccess.h

index 0a2a70096d8b2dc7345b6e1ca85c68b3cdd39b9e..0eff88aa6d6ae6626ad411876aeca9ee41887ca4 100644 (file)
@@ -163,18 +163,29 @@ static inline int bad_user_access_length(void)
                : "a" (__ptr(ptr)));            \
 })
 
                : "a" (__ptr(ptr)));            \
 })
 
-#define __copy_from_user(to, from, n) copy_from_user(to, from, n)
-#define __copy_to_user(to, from, n) copy_to_user(to, from, n)
 #define __copy_to_user_inatomic __copy_to_user
 #define __copy_from_user_inatomic __copy_from_user
 
 #define __copy_to_user_inatomic __copy_to_user
 #define __copy_from_user_inatomic __copy_from_user
 
+static inline unsigned long __must_check
+__copy_from_user(void *to, const void __user *from, unsigned long 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)
+{
+       memcpy((void __force *)to, from, n);
+       SSYNC();
+       return 0;
+}
+
 static inline unsigned long __must_check
 copy_from_user(void *to, const void __user *from, unsigned long n)
 {
 static inline unsigned long __must_check
 copy_from_user(void *to, const void __user *from, unsigned long n)
 {
-       if (likely(access_ok(VERIFY_READ, from, n))) {
-               memcpy(to, (const void __force *)from, n);
-               return 0;
-       }
+       if (likely(access_ok(VERIFY_READ, from, n)))
+               return __copy_from_user(to, from, n);
        memset(to, 0, n);
        return n;
 }
        memset(to, 0, n);
        return n;
 }
@@ -182,12 +193,9 @@ copy_from_user(void *to, const void __user *from, unsigned long n)
 static inline unsigned long __must_check
 copy_to_user(void __user *to, const void *from, unsigned long n)
 {
 static inline unsigned long __must_check
 copy_to_user(void __user *to, const void *from, unsigned long n)
 {
-       if (access_ok(VERIFY_WRITE, to, n))
-               memcpy((void __force *)to, from, n);
-       else
-               return n;
-       SSYNC();
-       return 0;
+       if (likely(access_ok(VERIFY_WRITE, to, n)))
+               return __copy_to_user(to, from, n);
+       return n;
 }
 
 /*
 }
 
 /*