One part of __get_user_nocheck() is used for __get_user(),
the other part for unsafe_get_user().

Move the part dedicated to unsafe_get_user() in it.

Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu>
---
 arch/powerpc/include/asm/uaccess.h | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/arch/powerpc/include/asm/uaccess.h 
b/arch/powerpc/include/asm/uaccess.h
index a8c683695ec7..678651a615c3 100644
--- a/arch/powerpc/include/asm/uaccess.h
+++ b/arch/powerpc/include/asm/uaccess.h
@@ -49,7 +49,7 @@ static inline bool __access_ok(unsigned long addr, unsigned 
long size)
        __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
 
 #define __get_user(x, ptr) \
-       __get_user_nocheck((x), (ptr), sizeof(*(ptr)), true)
+       __get_user_nocheck((x), (ptr), sizeof(*(ptr)))
 #define __put_user(x, ptr) \
        __put_user_nocheck((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
 
@@ -216,19 +216,15 @@ do {                                                      
        \
 #define __long_type(x) \
        __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
 
-#define __get_user_nocheck(x, ptr, size, do_allow)                     \
+#define __get_user_nocheck(x, ptr, size)                       \
 ({                                                             \
        long __gu_err;                                          \
        __long_type(*(ptr)) __gu_val;                           \
        __typeof__(*(ptr)) __user *__gu_addr = (ptr);   \
        __typeof__(size) __gu_size = (size);                    \
                                                                \
-       if (do_allow) {                                                         
\
-               might_fault();                                  \
-               __get_user_size(__gu_val, __gu_addr, __gu_size, __gu_err);      
\
-       } else {                                                                
        \
-               __get_user_size_allowed(__gu_val, __gu_addr, __gu_size, 
__gu_err); \
-       }                                                                       
\
+       might_fault();                                  \
+       __get_user_size(__gu_val, __gu_addr, __gu_size, __gu_err);      \
        (x) = (__typeof__(*(ptr)))__gu_val;                     \
                                                                \
        __gu_err;                                               \
@@ -386,8 +382,14 @@ user_write_access_begin(const void __user *ptr, size_t len)
 #define user_write_access_end          prevent_current_write_to_user
 
 #define unsafe_get_user(x, p, e) do {                                  \
-       if (unlikely(__get_user_nocheck((x), (p), sizeof(*(p)), false)))\
-               goto e;                                                 \
+       long __gu_err;                                          \
+       __long_type(*(p)) __gu_val;                             \
+       __typeof__(*(p)) __user *__gu_addr = (p);               \
+                                                               \
+       __get_user_size_allowed(__gu_val, __gu_addr, sizeof(*(p)), __gu_err); \
+       if (__gu_err)                                           \
+               goto e;                                         \
+       (x) = (__typeof__(*(p)))__gu_val;                       \
 } while (0)
 
 #define unsafe_put_user(x, p, e) \
-- 
2.25.0

Reply via email to