powerpc/uaccess: Remove __unsafe_put_user_goto()
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Wed, 10 Mar 2021 17:46:47 +0000 (17:46 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 3 Apr 2021 10:21:55 +0000 (21:21 +1100)
__unsafe_put_user_goto() is just an intermediate layer to
__put_user_size_goto() without added value other than doing
the __user pointer type checking.

Do the __user pointer type checking in __put_user_size_goto()
and remove __unsafe_put_user_goto().

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/b6552149209aebd887a6977272b06a41256bdb9f.1615398265.git.christophe.leroy@csgroup.eu
arch/powerpc/include/asm/uaccess.h

index ce3dc3f407ac7388f78e331de73dc975a7cf64d5..ea167ac3aaf78e6821ada427f93032019fff8555 100644 (file)
@@ -130,23 +130,17 @@ __pu_failed:                                                      \
 
 #define __put_user_size_goto(x, ptr, size, label)              \
 do {                                                           \
+       __typeof__(*(ptr)) __user *__pus_addr = (ptr);          \
+                                                               \
        switch (size) {                                         \
-       case 1: __put_user_asm_goto(x, ptr, label, "stb"); break;       \
-       case 2: __put_user_asm_goto(x, ptr, label, "sth"); break;       \
-       case 4: __put_user_asm_goto(x, ptr, label, "stw"); break;       \
-       case 8: __put_user_asm2_goto(x, ptr, label); break;     \
+       case 1: __put_user_asm_goto(x, __pus_addr, label, "stb"); break;        \
+       case 2: __put_user_asm_goto(x, __pus_addr, label, "sth"); break;        \
+       case 4: __put_user_asm_goto(x, __pus_addr, label, "stw"); break;        \
+       case 8: __put_user_asm2_goto(x, __pus_addr, label); break;              \
        default: __put_user_bad();                              \
        }                                                       \
 } while (0)
 
-#define __unsafe_put_user_goto(x, ptr, size, label)            \
-do {                                                           \
-       __typeof__(*(ptr)) __user *__pu_addr = (ptr);           \
-       __chk_user_ptr(ptr);                                    \
-       __put_user_size_goto((x), __pu_addr, (size), label);    \
-} while (0)
-
-
 extern long __get_user_bad(void);
 
 /*
@@ -404,7 +398,7 @@ user_write_access_begin(const void __user *ptr, size_t len)
 } while (0)
 
 #define unsafe_put_user(x, p, e) \
-       __unsafe_put_user_goto((__typeof__(*(p)))(x), (p), sizeof(*(p)), e)
+       __put_user_size_goto((__typeof__(*(p)))(x), (p), sizeof(*(p)), e)
 
 #define unsafe_copy_from_user(d, s, l, e) \
 do {                                                                                   \