diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-03-23 23:44:19 -0500 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-03-23 23:44:19 -0500 |
| commit | 1ebbe2b20091d306453a5cf480a87e6cd28ae76f (patch) | |
| tree | f5cd7a0fa69b8b1938cb5a0faed2e7b0628072a5 /arch/mips/kernel/signal32.c | |
| parent | ac58c9059da8886b5e8cde012a80266b18ca146e (diff) | |
| parent | 674a396c6d2ba0341ebdd7c1c9950f32f018e2dd (diff) | |
Merge branch 'linus'
Diffstat (limited to 'arch/mips/kernel/signal32.c')
| -rw-r--r-- | arch/mips/kernel/signal32.c | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c index 237cd8a2cd32..f32a22997c3d 100644 --- a/arch/mips/kernel/signal32.c +++ b/arch/mips/kernel/signal32.c | |||
| @@ -163,7 +163,7 @@ static inline int put_sigset(const sigset_t *kbuf, compat_sigset_t __user *ubuf) | |||
| 163 | return err; | 163 | return err; |
| 164 | } | 164 | } |
| 165 | 165 | ||
| 166 | static inline int get_sigset(sigset_t *kbuf, const compat_sigset_t *ubuf) | 166 | static inline int get_sigset(sigset_t *kbuf, const compat_sigset_t __user *ubuf) |
| 167 | { | 167 | { |
| 168 | int err = 0; | 168 | int err = 0; |
| 169 | unsigned long sig[4]; | 169 | unsigned long sig[4]; |
| @@ -195,10 +195,10 @@ save_static_function(sys32_sigsuspend); | |||
| 195 | __attribute_used__ noinline static int | 195 | __attribute_used__ noinline static int |
| 196 | _sys32_sigsuspend(nabi_no_regargs struct pt_regs regs) | 196 | _sys32_sigsuspend(nabi_no_regargs struct pt_regs regs) |
| 197 | { | 197 | { |
| 198 | compat_sigset_t *uset; | 198 | compat_sigset_t __user *uset; |
| 199 | sigset_t newset; | 199 | sigset_t newset; |
| 200 | 200 | ||
| 201 | uset = (compat_sigset_t *) regs.regs[4]; | 201 | uset = (compat_sigset_t __user *) regs.regs[4]; |
| 202 | if (get_sigset(&newset, uset)) | 202 | if (get_sigset(&newset, uset)) |
| 203 | return -EFAULT; | 203 | return -EFAULT; |
| 204 | sigdelsetmask(&newset, ~_BLOCKABLE); | 204 | sigdelsetmask(&newset, ~_BLOCKABLE); |
| @@ -219,7 +219,7 @@ save_static_function(sys32_rt_sigsuspend); | |||
| 219 | __attribute_used__ noinline static int | 219 | __attribute_used__ noinline static int |
| 220 | _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) | 220 | _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) |
| 221 | { | 221 | { |
| 222 | compat_sigset_t *uset; | 222 | compat_sigset_t __user *uset; |
| 223 | sigset_t newset; | 223 | sigset_t newset; |
| 224 | size_t sigsetsize; | 224 | size_t sigsetsize; |
| 225 | 225 | ||
| @@ -228,7 +228,7 @@ _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) | |||
| 228 | if (sigsetsize != sizeof(compat_sigset_t)) | 228 | if (sigsetsize != sizeof(compat_sigset_t)) |
| 229 | return -EINVAL; | 229 | return -EINVAL; |
| 230 | 230 | ||
| 231 | uset = (compat_sigset_t *) regs.regs[4]; | 231 | uset = (compat_sigset_t __user *) regs.regs[4]; |
| 232 | if (get_sigset(&newset, uset)) | 232 | if (get_sigset(&newset, uset)) |
| 233 | return -EFAULT; | 233 | return -EFAULT; |
| 234 | sigdelsetmask(&newset, ~_BLOCKABLE); | 234 | sigdelsetmask(&newset, ~_BLOCKABLE); |
| @@ -236,7 +236,7 @@ _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) | |||
| 236 | spin_lock_irq(¤t->sighand->siglock); | 236 | spin_lock_irq(¤t->sighand->siglock); |
| 237 | current->saved_sigmask = current->blocked; | 237 | current->saved_sigmask = current->blocked; |
| 238 | current->blocked = newset; | 238 | current->blocked = newset; |
| 239 | recalc_sigpending(); | 239 | recalc_sigpending(); |
| 240 | spin_unlock_irq(¤t->sighand->siglock); | 240 | spin_unlock_irq(¤t->sighand->siglock); |
| 241 | 241 | ||
| 242 | current->state = TASK_INTERRUPTIBLE; | 242 | current->state = TASK_INTERRUPTIBLE; |
| @@ -245,8 +245,8 @@ _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) | |||
| 245 | return -ERESTARTNOHAND; | 245 | return -ERESTARTNOHAND; |
| 246 | } | 246 | } |
| 247 | 247 | ||
| 248 | asmlinkage int sys32_sigaction(int sig, const struct sigaction32 *act, | 248 | asmlinkage int sys32_sigaction(int sig, const struct sigaction32 __user *act, |
| 249 | struct sigaction32 *oact) | 249 | struct sigaction32 __user *oact) |
| 250 | { | 250 | { |
| 251 | struct k_sigaction new_ka, old_ka; | 251 | struct k_sigaction new_ka, old_ka; |
| 252 | int ret; | 252 | int ret; |
| @@ -272,15 +272,15 @@ asmlinkage int sys32_sigaction(int sig, const struct sigaction32 *act, | |||
| 272 | 272 | ||
| 273 | if (!ret && oact) { | 273 | if (!ret && oact) { |
| 274 | if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact))) | 274 | if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact))) |
| 275 | return -EFAULT; | 275 | return -EFAULT; |
| 276 | err |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags); | 276 | err |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags); |
| 277 | err |= __put_user((u32)(u64)old_ka.sa.sa_handler, | 277 | err |= __put_user((u32)(u64)old_ka.sa.sa_handler, |
| 278 | &oact->sa_handler); | 278 | &oact->sa_handler); |
| 279 | err |= __put_user(old_ka.sa.sa_mask.sig[0], oact->sa_mask.sig); | 279 | err |= __put_user(old_ka.sa.sa_mask.sig[0], oact->sa_mask.sig); |
| 280 | err |= __put_user(0, &oact->sa_mask.sig[1]); | 280 | err |= __put_user(0, &oact->sa_mask.sig[1]); |
| 281 | err |= __put_user(0, &oact->sa_mask.sig[2]); | 281 | err |= __put_user(0, &oact->sa_mask.sig[2]); |
| 282 | err |= __put_user(0, &oact->sa_mask.sig[3]); | 282 | err |= __put_user(0, &oact->sa_mask.sig[3]); |
| 283 | if (err) | 283 | if (err) |
| 284 | return -EFAULT; | 284 | return -EFAULT; |
| 285 | } | 285 | } |
| 286 | 286 | ||
| @@ -301,7 +301,7 @@ asmlinkage int sys32_sigaltstack(nabi_no_regargs struct pt_regs regs) | |||
| 301 | if (!access_ok(VERIFY_READ, uss, sizeof(*uss))) | 301 | if (!access_ok(VERIFY_READ, uss, sizeof(*uss))) |
| 302 | return -EFAULT; | 302 | return -EFAULT; |
| 303 | err |= __get_user(sp, &uss->ss_sp); | 303 | err |= __get_user(sp, &uss->ss_sp); |
| 304 | kss.ss_sp = (void *) (long) sp; | 304 | kss.ss_sp = (void __user *) (long) sp; |
| 305 | err |= __get_user(kss.ss_size, &uss->ss_size); | 305 | err |= __get_user(kss.ss_size, &uss->ss_size); |
| 306 | err |= __get_user(kss.ss_flags, &uss->ss_flags); | 306 | err |= __get_user(kss.ss_flags, &uss->ss_flags); |
| 307 | if (err) | 307 | if (err) |
| @@ -316,7 +316,7 @@ asmlinkage int sys32_sigaltstack(nabi_no_regargs struct pt_regs regs) | |||
| 316 | if (!ret && uoss) { | 316 | if (!ret && uoss) { |
| 317 | if (!access_ok(VERIFY_WRITE, uoss, sizeof(*uoss))) | 317 | if (!access_ok(VERIFY_WRITE, uoss, sizeof(*uoss))) |
| 318 | return -EFAULT; | 318 | return -EFAULT; |
| 319 | sp = (int) (long) koss.ss_sp; | 319 | sp = (int) (unsigned long) koss.ss_sp; |
| 320 | err |= __put_user(sp, &uoss->ss_sp); | 320 | err |= __put_user(sp, &uoss->ss_sp); |
| 321 | err |= __put_user(koss.ss_size, &uoss->ss_size); | 321 | err |= __put_user(koss.ss_size, &uoss->ss_size); |
| 322 | err |= __put_user(koss.ss_flags, &uoss->ss_flags); | 322 | err |= __put_user(koss.ss_flags, &uoss->ss_flags); |
| @@ -527,7 +527,7 @@ _sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
| 527 | /* The ucontext contains a stack32_t, so we must convert! */ | 527 | /* The ucontext contains a stack32_t, so we must convert! */ |
| 528 | if (__get_user(sp, &frame->rs_uc.uc_stack.ss_sp)) | 528 | if (__get_user(sp, &frame->rs_uc.uc_stack.ss_sp)) |
| 529 | goto badframe; | 529 | goto badframe; |
| 530 | st.ss_sp = (void *)(long) sp; | 530 | st.ss_sp = (void __user *)(long) sp; |
| 531 | if (__get_user(st.ss_size, &frame->rs_uc.uc_stack.ss_size)) | 531 | if (__get_user(st.ss_size, &frame->rs_uc.uc_stack.ss_size)) |
| 532 | goto badframe; | 532 | goto badframe; |
| 533 | if (__get_user(st.ss_flags, &frame->rs_uc.uc_stack.ss_flags)) | 533 | if (__get_user(st.ss_flags, &frame->rs_uc.uc_stack.ss_flags)) |
| @@ -624,11 +624,11 @@ static inline void __user *get_sigframe(struct k_sigaction *ka, | |||
| 624 | sp = regs->regs[29]; | 624 | sp = regs->regs[29]; |
| 625 | 625 | ||
| 626 | /* | 626 | /* |
| 627 | * FPU emulator may have it's own trampoline active just | 627 | * FPU emulator may have it's own trampoline active just |
| 628 | * above the user stack, 16-bytes before the next lowest | 628 | * above the user stack, 16-bytes before the next lowest |
| 629 | * 16 byte boundary. Try to avoid trashing it. | 629 | * 16 byte boundary. Try to avoid trashing it. |
| 630 | */ | 630 | */ |
| 631 | sp -= 32; | 631 | sp -= 32; |
| 632 | 632 | ||
| 633 | /* This is the X/Open sanctioned signal stack switching. */ | 633 | /* This is the X/Open sanctioned signal stack switching. */ |
| 634 | if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0)) | 634 | if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0)) |
| @@ -868,7 +868,7 @@ no_signal: | |||
| 868 | } | 868 | } |
| 869 | } | 869 | } |
| 870 | 870 | ||
| 871 | asmlinkage int sys32_rt_sigaction(int sig, const struct sigaction32 *act, | 871 | asmlinkage int sys32_rt_sigaction(int sig, const struct sigaction32 __user *act, |
| 872 | struct sigaction32 __user *oact, | 872 | struct sigaction32 __user *oact, |
| 873 | unsigned int sigsetsize) | 873 | unsigned int sigsetsize) |
| 874 | { | 874 | { |
| @@ -912,7 +912,7 @@ out: | |||
| 912 | return ret; | 912 | return ret; |
| 913 | } | 913 | } |
| 914 | 914 | ||
| 915 | asmlinkage int sys32_rt_sigprocmask(int how, compat_sigset_t *set, | 915 | asmlinkage int sys32_rt_sigprocmask(int how, compat_sigset_t __user *set, |
| 916 | compat_sigset_t __user *oset, unsigned int sigsetsize) | 916 | compat_sigset_t __user *oset, unsigned int sigsetsize) |
| 917 | { | 917 | { |
| 918 | sigset_t old_set, new_set; | 918 | sigset_t old_set, new_set; |
