OSDN Git Service

powerpc/uaccess: Remove calls to __get_user_bad() and __put_user_bad()
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Wed, 10 Mar 2021 17:46:49 +0000 (17:46 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 3 Apr 2021 10:22:02 +0000 (21:22 +1100)
__get_user_bad() and __put_user_bad() are functions that are
declared but not defined, in order to make the link fail in
case they are called.

Nowadays, we have BUILD_BUG() and BUILD_BUG_ON() for that, and
they have the advantage to break the build earlier as it breaks
it at compile time instead of link time.

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

index 605fa79..47a454d 100644 (file)
@@ -53,8 +53,6 @@ static inline bool __access_ok(unsigned long addr, unsigned long size)
 #define __put_user(x, ptr) \
        __put_user_nocheck((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
 
-extern long __put_user_bad(void);
-
 #define __put_user_size(x, ptr, size, retval)                  \
 do {                                                           \
        __label__ __pu_failed;                                  \
@@ -136,12 +134,10 @@ do {                                                              \
        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();                              \
+       default: BUILD_BUG();                                   \
        }                                                       \
 } while (0)
 
-extern long __get_user_bad(void);
-
 /*
  * This does an atomic 128 byte aligned load from userspace.
  * Upto caller to do enable_kernel_vmx() before calling!
@@ -196,14 +192,13 @@ extern long __get_user_bad(void);
 #define __get_user_size_allowed(x, ptr, size, retval)          \
 do {                                                           \
        retval = 0;                                             \
-       if (size > sizeof(x))                                   \
-               (x) = __get_user_bad();                         \
+       BUILD_BUG_ON(size > sizeof(x));                         \
        switch (size) {                                         \
        case 1: __get_user_asm(x, (u8 __user *)ptr, retval, "lbz"); break;      \
        case 2: __get_user_asm(x, (u16 __user *)ptr, retval, "lhz"); break;     \
        case 4: __get_user_asm(x, (u32 __user *)ptr, retval, "lwz"); break;     \
        case 8: __get_user_asm2(x, (u64 __user *)ptr, retval);  break;  \
-       default: (x) = __get_user_bad();                        \
+       default: BUILD_BUG();                                   \
        }                                                       \
 } while (0)