Commit bad956b8 authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

powerpc/uaccess: Remove __get/put_user_inatomic()

Powerpc is the only architecture having _inatomic variants of
__get_user() and __put_user() accessors. They were introduced
by commit e68c825b ("[POWERPC] Add inatomic versions of __get_user
and __put_user").

Those variants expand to the _nosleep macros instead of expanding
to the _nocheck macros. The only difference between the _nocheck
and the _nosleep macros is the call to might_fault().

Since commit 662bbcb2 ("mm, sched: Allow uaccess in atomic with
pagefault_disable()"), __get/put_user() can be used in atomic parts
of the code, therefore __get/put_user_inatomic() have become useless.

Remove __get_user_inatomic() and __put_user_inatomic().
Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Reviewed-by: default avatarDaniel Axtens <dja@axtens.net>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/1e5c895669e8d54a7810b62dc61eb111f33c2c37.1615398265.git.christophe.leroy@csgroup.eu
parent 3fa3db32
...@@ -53,11 +53,6 @@ static inline bool __access_ok(unsigned long addr, unsigned long size) ...@@ -53,11 +53,6 @@ static inline bool __access_ok(unsigned long addr, unsigned long size)
#define __put_user(x, ptr) \ #define __put_user(x, ptr) \
__put_user_nocheck((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr))) __put_user_nocheck((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
#define __get_user_inatomic(x, ptr) \
__get_user_nosleep((x), (ptr), sizeof(*(ptr)))
#define __put_user_inatomic(x, ptr) \
__put_user_nosleep((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
#ifdef CONFIG_PPC64 #ifdef CONFIG_PPC64
#define ___get_user_instr(gu_op, dest, ptr) \ #define ___get_user_instr(gu_op, dest, ptr) \
...@@ -92,9 +87,6 @@ static inline bool __access_ok(unsigned long addr, unsigned long size) ...@@ -92,9 +87,6 @@ static inline bool __access_ok(unsigned long addr, unsigned long size)
#define __get_user_instr(x, ptr) \ #define __get_user_instr(x, ptr) \
___get_user_instr(__get_user, x, ptr) ___get_user_instr(__get_user, x, ptr)
#define __get_user_instr_inatomic(x, ptr) \
___get_user_instr(__get_user_inatomic, x, ptr)
extern long __put_user_bad(void); extern long __put_user_bad(void);
#define __put_user_size(x, ptr, size, retval) \ #define __put_user_size(x, ptr, size, retval) \
...@@ -141,20 +133,6 @@ __pu_failed: \ ...@@ -141,20 +133,6 @@ __pu_failed: \
__pu_err; \ __pu_err; \
}) })
#define __put_user_nosleep(x, ptr, size) \
({ \
long __pu_err; \
__typeof__(*(ptr)) __user *__pu_addr = (ptr); \
__typeof__(*(ptr)) __pu_val = (x); \
__typeof__(size) __pu_size = (size); \
\
__chk_user_ptr(__pu_addr); \
__put_user_size(__pu_val, __pu_addr, __pu_size, __pu_err); \
\
__pu_err; \
})
/* /*
* We don't tell gcc that we are accessing memory, but this is OK * We don't tell gcc that we are accessing memory, but this is OK
* because we do not write to any memory gcc knows about, so there * because we do not write to any memory gcc knows about, so there
...@@ -320,21 +298,6 @@ do { \ ...@@ -320,21 +298,6 @@ do { \
__gu_err; \ __gu_err; \
}) })
#define __get_user_nosleep(x, ptr, size) \
({ \
long __gu_err; \
__long_type(*(ptr)) __gu_val; \
__typeof__(*(ptr)) __user *__gu_addr = (ptr); \
__typeof__(size) __gu_size = (size); \
\
__chk_user_ptr(__gu_addr); \
__get_user_size(__gu_val, __gu_addr, __gu_size, __gu_err); \
(x) = (__force __typeof__(*(ptr)))__gu_val; \
\
__gu_err; \
})
/* more complex routines */ /* more complex routines */
extern unsigned long __copy_tofrom_user(void __user *to, extern unsigned long __copy_tofrom_user(void __user *to,
......
...@@ -141,7 +141,7 @@ void wp_get_instr_detail(struct pt_regs *regs, struct ppc_inst *instr, ...@@ -141,7 +141,7 @@ void wp_get_instr_detail(struct pt_regs *regs, struct ppc_inst *instr,
{ {
struct instruction_op op; struct instruction_op op;
if (__get_user_instr_inatomic(*instr, (void __user *)regs->nip)) if (__get_user_instr(*instr, (void __user *)regs->nip))
return; return;
analyse_instr(&op, regs, *instr); analyse_instr(&op, regs, *instr);
......
...@@ -863,7 +863,7 @@ static void p9_hmi_special_emu(struct pt_regs *regs) ...@@ -863,7 +863,7 @@ static void p9_hmi_special_emu(struct pt_regs *regs)
unsigned long ea, msr, msr_mask; unsigned long ea, msr, msr_mask;
bool swap; bool swap;
if (__get_user_inatomic(instr, (unsigned int __user *)regs->nip)) if (__get_user(instr, (unsigned int __user *)regs->nip))
return; return;
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment