diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-12-23 03:06:03 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-02-03 18:16:00 -0500 |
commit | 08d4f65352f9464f1dd7d65d0bc27d57abf3d161 (patch) | |
tree | c1afd8b7156ccccfee26554826e12821ab746e92 /arch/m68k | |
parent | 0aa0203fb43f04714004b2c4ad33b858e240555d (diff) |
m68k: switch to generic sigaltstack
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/m68k')
-rw-r--r-- | arch/m68k/Kconfig | 1 | ||||
-rw-r--r-- | arch/m68k/kernel/signal.c | 16 |
2 files changed, 4 insertions, 13 deletions
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index 6710084e072a..3e73dca71677 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig | |||
@@ -18,6 +18,7 @@ config M68K | |||
18 | select HAVE_MOD_ARCH_SPECIFIC | 18 | select HAVE_MOD_ARCH_SPECIFIC |
19 | select MODULES_USE_ELF_REL | 19 | select MODULES_USE_ELF_REL |
20 | select MODULES_USE_ELF_RELA | 20 | select MODULES_USE_ELF_RELA |
21 | select GENERIC_SIGALTSTACK | ||
21 | 22 | ||
22 | config RWSEM_GENERIC_SPINLOCK | 23 | config RWSEM_GENERIC_SPINLOCK |
23 | bool | 24 | bool |
diff --git a/arch/m68k/kernel/signal.c b/arch/m68k/kernel/signal.c index 9a396cda3147..41a34de4b4b4 100644 --- a/arch/m68k/kernel/signal.c +++ b/arch/m68k/kernel/signal.c | |||
@@ -267,13 +267,6 @@ sys_sigaction(int sig, const struct old_sigaction __user *act, | |||
267 | return ret; | 267 | return ret; |
268 | } | 268 | } |
269 | 269 | ||
270 | asmlinkage int | ||
271 | sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss) | ||
272 | { | ||
273 | return do_sigaltstack(uss, uoss, rdusp()); | ||
274 | } | ||
275 | |||
276 | |||
277 | /* | 270 | /* |
278 | * Do a signal return; undo the signal stack. | 271 | * Do a signal return; undo the signal stack. |
279 | * | 272 | * |
@@ -765,8 +758,9 @@ rt_restore_ucontext(struct pt_regs *regs, struct switch_stack *sw, | |||
765 | err |= __get_user(temp, &uc->uc_formatvec); | 758 | err |= __get_user(temp, &uc->uc_formatvec); |
766 | 759 | ||
767 | err |= rt_restore_fpu_state(uc); | 760 | err |= rt_restore_fpu_state(uc); |
761 | err |= restore_altstack(&uc->uc_stack); | ||
768 | 762 | ||
769 | if (err || do_sigaltstack(&uc->uc_stack, NULL, usp) == -EFAULT) | 763 | if (err) |
770 | goto badframe; | 764 | goto badframe; |
771 | 765 | ||
772 | if (mangle_kernel_stack(regs, temp, &uc->uc_extra)) | 766 | if (mangle_kernel_stack(regs, temp, &uc->uc_extra)) |
@@ -1014,11 +1008,7 @@ static int setup_rt_frame (int sig, struct k_sigaction *ka, siginfo_t *info, | |||
1014 | /* Create the ucontext. */ | 1008 | /* Create the ucontext. */ |
1015 | err |= __put_user(0, &frame->uc.uc_flags); | 1009 | err |= __put_user(0, &frame->uc.uc_flags); |
1016 | err |= __put_user(NULL, &frame->uc.uc_link); | 1010 | err |= __put_user(NULL, &frame->uc.uc_link); |
1017 | err |= __put_user((void __user *)current->sas_ss_sp, | 1011 | err |= __save_altstack(&frame->uc.uc_stack, rdusp()); |
1018 | &frame->uc.uc_stack.ss_sp); | ||
1019 | err |= __put_user(sas_ss_flags(rdusp()), | ||
1020 | &frame->uc.uc_stack.ss_flags); | ||
1021 | err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size); | ||
1022 | err |= rt_setup_ucontext(&frame->uc, regs); | 1012 | err |= rt_setup_ucontext(&frame->uc, regs); |
1023 | err |= copy_to_user (&frame->uc.uc_sigmask, set, sizeof(*set)); | 1013 | err |= copy_to_user (&frame->uc.uc_sigmask, set, sizeof(*set)); |
1024 | 1014 | ||