powerpc/uaccess: Remove __unsafe_put_user_goto()
__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
This commit is contained in:
Родитель
ed0d9c66f9
Коммит
be15a16579
|
@ -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 { \
|
||||
|
|
Загрузка…
Ссылка в новой задаче