aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-12-25 19:28:15 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2013-02-03 18:16:04 -0500
commit33f9f78eec7e332dac6bee9cf66cd2bd435b7419 (patch)
tree824a1f190561ac68814ae514bad390a8c9e32d57
parent7d1d990ff161bdd2f0901a0916f35d272adf4c0b (diff)
mn10300: switch to generic old sigaction()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--arch/mn10300/Kconfig1
-rw-r--r--arch/mn10300/include/asm/signal.h7
-rw-r--r--arch/mn10300/kernel/signal.c35
3 files changed, 1 insertions, 42 deletions
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig
index f15703506d3f..12bf06f9abe5 100644
--- a/arch/mn10300/Kconfig
+++ b/arch/mn10300/Kconfig
@@ -12,6 +12,7 @@ config MN10300
12 select MODULES_USE_ELF_RELA 12 select MODULES_USE_ELF_RELA
13 select GENERIC_SIGALTSTACK 13 select GENERIC_SIGALTSTACK
14 select OLD_SIGSUSPEND3 14 select OLD_SIGSUSPEND3
15 select OLD_SIGACTION
15 16
16config AM33_2 17config AM33_2
17 def_bool n 18 def_bool n
diff --git a/arch/mn10300/include/asm/signal.h b/arch/mn10300/include/asm/signal.h
index 288ade5ec94e..214ff5e9fe60 100644
--- a/arch/mn10300/include/asm/signal.h
+++ b/arch/mn10300/include/asm/signal.h
@@ -26,13 +26,6 @@ typedef struct {
26 unsigned long sig[_NSIG_WORDS]; 26 unsigned long sig[_NSIG_WORDS];
27} sigset_t; 27} sigset_t;
28 28
29struct old_sigaction {
30 __sighandler_t sa_handler;
31 old_sigset_t sa_mask;
32 unsigned long sa_flags;
33 __sigrestore_t sa_restorer;
34};
35
36#define __ARCH_HAS_SA_RESTORER 29#define __ARCH_HAS_SA_RESTORER
37 30
38#include <asm/sigcontext.h> 31#include <asm/sigcontext.h>
diff --git a/arch/mn10300/kernel/signal.c b/arch/mn10300/kernel/signal.c
index d336d64f95f2..9dfac5cd16e6 100644
--- a/arch/mn10300/kernel/signal.c
+++ b/arch/mn10300/kernel/signal.c
@@ -32,41 +32,6 @@
32#define DEBUG_SIG 0 32#define DEBUG_SIG 0
33 33
34/* 34/*
35 * set signal action syscall
36 */
37asmlinkage long sys_sigaction(int sig,
38 const struct old_sigaction __user *act,
39 struct old_sigaction __user *oact)
40{
41 struct k_sigaction new_ka, old_ka;
42 int ret;
43
44 if (act) {
45 old_sigset_t mask;
46 if (verify_area(VERIFY_READ, act, sizeof(*act)) ||
47 __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
48 __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) ||
49 __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
50 __get_user(mask, &act->sa_mask))
51 return -EFAULT;
52 siginitset(&new_ka.sa.sa_mask, mask);
53 }
54
55 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
56
57 if (!ret && oact) {
58 if (verify_area(VERIFY_WRITE, oact, sizeof(*oact)) ||
59 __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
60 __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) ||
61 __put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
62 __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask))
63 return -EFAULT;
64 }
65
66 return ret;
67}
68
69/*
70 * do a signal return; undo the signal stack. 35 * do a signal return; undo the signal stack.
71 */ 36 */
72static int restore_sigcontext(struct pt_regs *regs, 37static int restore_sigcontext(struct pt_regs *regs,