aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-12-25 19:29:41 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2013-02-03 18:15:57 -0500
commitb0375744f1c74b39a2677fc29045ad1cb6f4c6cd (patch)
tree3c27bb44e5dd4a96d12da9b8b3d8ac8ea00a9fec /arch
parentb407e620eca0b026410b7f95e76c83028779019a (diff)
h8300: switch to generic old sigaction()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r--arch/h8300/Kconfig1
-rw-r--r--arch/h8300/include/asm/signal.h7
-rw-r--r--arch/h8300/kernel/signal.c32
3 files changed, 1 insertions, 39 deletions
diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
index 18a06e4a835e..0b0176ce2c35 100644
--- a/arch/h8300/Kconfig
+++ b/arch/h8300/Kconfig
@@ -11,6 +11,7 @@ config H8300
11 select MODULES_USE_ELF_RELA 11 select MODULES_USE_ELF_RELA
12 select GENERIC_SIGALTSTACK 12 select GENERIC_SIGALTSTACK
13 select OLD_SIGSUSPEND3 13 select OLD_SIGSUSPEND3
14 select OLD_SIGACTION
14 15
15config SYMBOL_PREFIX 16config SYMBOL_PREFIX
16 string 17 string
diff --git a/arch/h8300/include/asm/signal.h b/arch/h8300/include/asm/signal.h
index 9b18a0959461..6341e36386f8 100644
--- a/arch/h8300/include/asm/signal.h
+++ b/arch/h8300/include/asm/signal.h
@@ -16,13 +16,6 @@ typedef struct {
16 unsigned long sig[_NSIG_WORDS]; 16 unsigned long sig[_NSIG_WORDS];
17} sigset_t; 17} sigset_t;
18 18
19struct old_sigaction {
20 __sighandler_t sa_handler;
21 old_sigset_t sa_mask;
22 unsigned long sa_flags;
23 void (*sa_restorer)(void);
24};
25
26#define __ARCH_HAS_SA_RESTORER 19#define __ARCH_HAS_SA_RESTORER
27 20
28#include <asm/sigcontext.h> 21#include <asm/sigcontext.h>
diff --git a/arch/h8300/kernel/signal.c b/arch/h8300/kernel/signal.c
index 641d947a83b8..a65ff3b76326 100644
--- a/arch/h8300/kernel/signal.c
+++ b/arch/h8300/kernel/signal.c
@@ -46,38 +46,6 @@
46#include <asm/traps.h> 46#include <asm/traps.h>
47#include <asm/ucontext.h> 47#include <asm/ucontext.h>
48 48
49asmlinkage int
50sys_sigaction(int sig, const struct old_sigaction *act,
51 struct old_sigaction *oact)
52{
53 struct k_sigaction new_ka, old_ka;
54 int ret;
55
56 if (act) {
57 old_sigset_t mask;
58 if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
59 __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
60 __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) ||
61 __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
62 __get_user(mask, &act->sa_mask))
63 return -EFAULT;
64 siginitset(&new_ka.sa.sa_mask, mask);
65 }
66
67 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
68
69 if (!ret && oact) {
70 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
71 __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
72 __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) ||
73 __put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
74 __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask))
75 return -EFAULT;
76 }
77
78 return ret;
79}
80
81/* 49/*
82 * Do a signal return; undo the signal stack. 50 * Do a signal return; undo the signal stack.
83 * 51 *