diff options
Diffstat (limited to 'arch/mips/kernel/signal.c')
-rw-r--r-- | arch/mips/kernel/signal.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c index 0209c1dd1429..eb127230cc9a 100644 --- a/arch/mips/kernel/signal.c +++ b/arch/mips/kernel/signal.c | |||
@@ -47,9 +47,10 @@ save_static_function(sys_sigsuspend); | |||
47 | __attribute_used__ noinline static int | 47 | __attribute_used__ noinline static int |
48 | _sys_sigsuspend(nabi_no_regargs struct pt_regs regs) | 48 | _sys_sigsuspend(nabi_no_regargs struct pt_regs regs) |
49 | { | 49 | { |
50 | sigset_t *uset, saveset, newset; | 50 | sigset_t saveset, newset; |
51 | sigset_t __user *uset; | ||
51 | 52 | ||
52 | uset = (sigset_t *) regs.regs[4]; | 53 | uset = (sigset_t __user *) regs.regs[4]; |
53 | if (copy_from_user(&newset, uset, sizeof(sigset_t))) | 54 | if (copy_from_user(&newset, uset, sizeof(sigset_t))) |
54 | return -EFAULT; | 55 | return -EFAULT; |
55 | sigdelsetmask(&newset, ~_BLOCKABLE); | 56 | sigdelsetmask(&newset, ~_BLOCKABLE); |
@@ -75,7 +76,8 @@ save_static_function(sys_rt_sigsuspend); | |||
75 | __attribute_used__ noinline static int | 76 | __attribute_used__ noinline static int |
76 | _sys_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) | 77 | _sys_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) |
77 | { | 78 | { |
78 | sigset_t *unewset, saveset, newset; | 79 | sigset_t saveset, newset; |
80 | sigset_t __user *unewset; | ||
79 | size_t sigsetsize; | 81 | size_t sigsetsize; |
80 | 82 | ||
81 | /* XXX Don't preclude handling different sized sigset_t's. */ | 83 | /* XXX Don't preclude handling different sized sigset_t's. */ |
@@ -83,7 +85,7 @@ _sys_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) | |||
83 | if (sigsetsize != sizeof(sigset_t)) | 85 | if (sigsetsize != sizeof(sigset_t)) |
84 | return -EINVAL; | 86 | return -EINVAL; |
85 | 87 | ||
86 | unewset = (sigset_t *) regs.regs[4]; | 88 | unewset = (sigset_t __user *) regs.regs[4]; |
87 | if (copy_from_user(&newset, unewset, sizeof(newset))) | 89 | if (copy_from_user(&newset, unewset, sizeof(newset))) |
88 | return -EFAULT; | 90 | return -EFAULT; |
89 | sigdelsetmask(&newset, ~_BLOCKABLE); | 91 | sigdelsetmask(&newset, ~_BLOCKABLE); |
@@ -147,8 +149,8 @@ asmlinkage int sys_sigaction(int sig, const struct sigaction *act, | |||
147 | 149 | ||
148 | asmlinkage int sys_sigaltstack(nabi_no_regargs struct pt_regs regs) | 150 | asmlinkage int sys_sigaltstack(nabi_no_regargs struct pt_regs regs) |
149 | { | 151 | { |
150 | const stack_t *uss = (const stack_t *) regs.regs[4]; | 152 | const stack_t __user *uss = (const stack_t __user *) regs.regs[4]; |
151 | stack_t *uoss = (stack_t *) regs.regs[5]; | 153 | stack_t __user *uoss = (stack_t __user *) regs.regs[5]; |
152 | unsigned long usp = regs.regs[29]; | 154 | unsigned long usp = regs.regs[29]; |
153 | 155 | ||
154 | return do_sigaltstack(uss, uoss, usp); | 156 | return do_sigaltstack(uss, uoss, usp); |