Commit 96032f98 authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

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: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/810bd8840ef990a200f58c9dea9abe767ca02a3a.1594146723.git.christophe.leroy@csgroup.eu
parent 020c4831
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <linux/ptrace.h> #include <linux/ptrace.h>
#include <linux/ratelimit.h> #include <linux/ratelimit.h>
#include <linux/syscalls.h> #include <linux/syscalls.h>
#include <linux/pagemap.h>
#include <asm/sigcontext.h> #include <asm/sigcontext.h>
#include <asm/ucontext.h> #include <asm/ucontext.h>
...@@ -634,7 +635,6 @@ static long setup_trampoline(unsigned int syscall, unsigned int __user *tramp) ...@@ -634,7 +635,6 @@ static long setup_trampoline(unsigned int syscall, unsigned int __user *tramp)
SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx, SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx,
struct ucontext __user *, new_ctx, long, ctx_size) struct ucontext __user *, new_ctx, long, ctx_size)
{ {
unsigned char tmp;
sigset_t set; sigset_t set;
unsigned long new_msr = 0; unsigned long new_msr = 0;
int ctx_has_vsx_region = 0; int ctx_has_vsx_region = 0;
...@@ -669,9 +669,8 @@ SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx, ...@@ -669,9 +669,8 @@ SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx,
} }
if (new_ctx == NULL) if (new_ctx == NULL)
return 0; return 0;
if (!access_ok(new_ctx, ctx_size) if (!access_ok(new_ctx, ctx_size) ||
|| __get_user(tmp, (u8 __user *) new_ctx) fault_in_pages_readable((u8 __user *)new_ctx, ctx_size))
|| __get_user(tmp, (u8 __user *) new_ctx + ctx_size - 1))
return -EFAULT; return -EFAULT;
/* /*
......
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