diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-12-23 03:46:05 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-02-03 18:16:15 -0500 |
commit | 7a879a94d90dc5c494875b54499ae321400358d8 (patch) | |
tree | 677856f295ab1b41239a383c688ea67850638512 /arch/sh/kernel/signal_32.c | |
parent | 0aa0203fb43f04714004b2c4ad33b858e240555d (diff) |
sh: switch to generic sigaltstack
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/sh/kernel/signal_32.c')
-rw-r--r-- | arch/sh/kernel/signal_32.c | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c index 2f1f65356c0c..e540d07dd5c5 100644 --- a/arch/sh/kernel/signal_32.c +++ b/arch/sh/kernel/signal_32.c | |||
@@ -89,17 +89,6 @@ sys_sigaction(int sig, const struct old_sigaction __user *act, | |||
89 | return ret; | 89 | return ret; |
90 | } | 90 | } |
91 | 91 | ||
92 | asmlinkage int | ||
93 | sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss, | ||
94 | unsigned long r6, unsigned long r7, | ||
95 | struct pt_regs __regs) | ||
96 | { | ||
97 | struct pt_regs *regs = RELOC_HIDE(&__regs, 0); | ||
98 | |||
99 | return do_sigaltstack(uss, uoss, regs->regs[15]); | ||
100 | } | ||
101 | |||
102 | |||
103 | /* | 92 | /* |
104 | * Do a signal return; undo the signal stack. | 93 | * Do a signal return; undo the signal stack. |
105 | */ | 94 | */ |
@@ -257,8 +246,7 @@ asmlinkage int sys_rt_sigreturn(unsigned long r4, unsigned long r5, | |||
257 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &r0)) | 246 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &r0)) |
258 | goto badframe; | 247 | goto badframe; |
259 | 248 | ||
260 | if (do_sigaltstack(&frame->uc.uc_stack, NULL, | 249 | if (restore_altstack(&frame->uc.uc_stack)) |
261 | regs->regs[15]) == -EFAULT) | ||
262 | goto badframe; | 250 | goto badframe; |
263 | 251 | ||
264 | return r0; | 252 | return r0; |
@@ -423,11 +411,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
423 | /* Create the ucontext. */ | 411 | /* Create the ucontext. */ |
424 | err |= __put_user(0, &frame->uc.uc_flags); | 412 | err |= __put_user(0, &frame->uc.uc_flags); |
425 | err |= __put_user(NULL, &frame->uc.uc_link); | 413 | err |= __put_user(NULL, &frame->uc.uc_link); |
426 | err |= __put_user((void *)current->sas_ss_sp, | 414 | err |= __save_altstack(&frame->uc.uc_stack, regs->regs[15]); |
427 | &frame->uc.uc_stack.ss_sp); | ||
428 | err |= __put_user(sas_ss_flags(regs->regs[15]), | ||
429 | &frame->uc.uc_stack.ss_flags); | ||
430 | err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size); | ||
431 | err |= setup_sigcontext(&frame->uc.uc_mcontext, | 415 | err |= setup_sigcontext(&frame->uc.uc_mcontext, |
432 | regs, set->sig[0]); | 416 | regs, set->sig[0]); |
433 | err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); | 417 | err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); |