aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-12-25 19:30:17 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2013-02-03 18:15:55 -0500
commit177b6703f62f991ca250768e23398b21f7700f91 (patch)
tree2ccb7f970353dedeb81cd154b4dd8f12e6e6b58e /arch
parent39e08a9bae71a16ab0549b87b4e7207ae0d550ad (diff)
frv: switch to generic old sigaction()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r--arch/frv/Kconfig1
-rw-r--r--arch/frv/include/asm/signal.h7
-rw-r--r--arch/frv/kernel/signal.c32
3 files changed, 1 insertions, 39 deletions
diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig
index 683ab5c90233..e3f8ffdd4e7b 100644
--- a/arch/frv/Kconfig
+++ b/arch/frv/Kconfig
@@ -14,6 +14,7 @@ config FRV
14 select ARCH_WANT_IPC_PARSE_VERSION 14 select ARCH_WANT_IPC_PARSE_VERSION
15 select GENERIC_SIGALTSTACK 15 select GENERIC_SIGALTSTACK
16 select OLD_SIGSUSPEND3 16 select OLD_SIGSUSPEND3
17 select OLD_SIGACTION
17 18
18config ZONE_DMA 19config ZONE_DMA
19 bool 20 bool
diff --git a/arch/frv/include/asm/signal.h b/arch/frv/include/asm/signal.h
index 599500a31025..eca0abcb79d6 100644
--- a/arch/frv/include/asm/signal.h
+++ b/arch/frv/include/asm/signal.h
@@ -3,11 +3,4 @@
3 3
4#include <uapi/asm/signal.h> 4#include <uapi/asm/signal.h>
5 5
6struct old_sigaction {
7 __sighandler_t sa_handler;
8 old_sigset_t sa_mask;
9 unsigned long sa_flags;
10 __sigrestore_t sa_restorer;
11};
12
13#endif /* _ASM_SIGNAL_H */ 6#endif /* _ASM_SIGNAL_H */
diff --git a/arch/frv/kernel/signal.c b/arch/frv/kernel/signal.c
index 771756b7a7e8..d822700d4f15 100644
--- a/arch/frv/kernel/signal.c
+++ b/arch/frv/kernel/signal.c
@@ -32,38 +32,6 @@ struct fdpic_func_descriptor {
32 unsigned long GOT; 32 unsigned long GOT;
33}; 33};
34 34
35asmlinkage int sys_sigaction(int sig,
36 const struct old_sigaction __user *act,
37 struct old_sigaction __user *oact)
38{
39 struct k_sigaction new_ka, old_ka;
40 int ret;
41
42 if (act) {
43 old_sigset_t mask;
44 if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
45 __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
46 __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) ||
47 __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
48 __get_user(mask, &act->sa_mask))
49 return -EFAULT;
50 siginitset(&new_ka.sa.sa_mask, mask);
51 }
52
53 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
54
55 if (!ret && oact) {
56 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
57 __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
58 __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) ||
59 __put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
60 __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask))
61 return -EFAULT;
62 }
63
64 return ret;
65}
66
67/* 35/*
68 * Do a signal return; undo the signal stack. 36 * Do a signal return; undo the signal stack.
69 */ 37 */