mirror of https://gitee.com/openkylin/linux.git
powerpc/signal64: Don't opencode page prefaulting
Instead of doing a __get_user() from the first and last location into a tmp var which won't be used, use fault_in_pages_readable() Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/810bd8840ef990a200f58c9dea9abe767ca02a3a.1594146723.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
020c4831e0
commit
96032f983c
|
@ -21,6 +21,7 @@
|
|||
#include <linux/ptrace.h>
|
||||
#include <linux/ratelimit.h>
|
||||
#include <linux/syscalls.h>
|
||||
#include <linux/pagemap.h>
|
||||
|
||||
#include <asm/sigcontext.h>
|
||||
#include <asm/ucontext.h>
|
||||
|
@ -634,7 +635,6 @@ static long setup_trampoline(unsigned int syscall, unsigned int __user *tramp)
|
|||
SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx,
|
||||
struct ucontext __user *, new_ctx, long, ctx_size)
|
||||
{
|
||||
unsigned char tmp;
|
||||
sigset_t set;
|
||||
unsigned long new_msr = 0;
|
||||
int ctx_has_vsx_region = 0;
|
||||
|
@ -669,9 +669,8 @@ SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx,
|
|||
}
|
||||
if (new_ctx == NULL)
|
||||
return 0;
|
||||
if (!access_ok(new_ctx, ctx_size)
|
||||
|| __get_user(tmp, (u8 __user *) new_ctx)
|
||||
|| __get_user(tmp, (u8 __user *) new_ctx + ctx_size - 1))
|
||||
if (!access_ok(new_ctx, ctx_size) ||
|
||||
fault_in_pages_readable((u8 __user *)new_ctx, ctx_size))
|
||||
return -EFAULT;
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue