diff options
author | Christopher M. Riedl <cmr@codefail.de> | 2021-02-26 19:12:59 -0600 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2021-03-29 12:52:24 +1100 |
commit | d3ccc9781560af051554017c702631560bdc0811 (patch) | |
tree | 3b6184e4a3457313d93a968f4b27474294143349 /arch/powerpc/kernel/signal_32.c | |
parent | 0f92433b8f9f76608528101e7a81cd3bfd00e236 (diff) | |
download | linux-stable-d3ccc9781560af051554017c702631560bdc0811.tar.gz linux-stable-d3ccc9781560af051554017c702631560bdc0811.tar.bz2 linux-stable-d3ccc9781560af051554017c702631560bdc0811.zip |
powerpc/signal: Use __get_user() to copy sigset_t
Usually sigset_t is exactly 8B which is a "trivial" size and does not
warrant using __copy_from_user(). Use __get_user() directly in
anticipation of future work to remove the trivial size optimizations
from __copy_from_user().
The ppc32 implementation of get_sigset_t() previously called
copy_from_user() which, unlike __copy_from_user(), calls access_ok().
Replacing this w/ __get_user() (no access_ok()) is fine here since both
callsites in signal_32.c are preceded by an earlier access_ok().
Signed-off-by: Christopher M. Riedl <cmr@codefail.de>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210227011259.11992-11-cmr@codefail.de
Diffstat (limited to 'arch/powerpc/kernel/signal_32.c')
-rw-r--r-- | arch/powerpc/kernel/signal_32.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c index 75ee918a120a..c505b444a613 100644 --- a/arch/powerpc/kernel/signal_32.c +++ b/arch/powerpc/kernel/signal_32.c @@ -144,7 +144,7 @@ static inline int restore_general_regs(struct pt_regs *regs, static inline int get_sigset_t(sigset_t *set, const sigset_t __user *uset) { - return copy_from_user(set, uset, sizeof(*uset)); + return __get_user_sigset(set, uset); } #define to_user_ptr(p) ((unsigned long)(p)) |