diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-12-25 19:23:55 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-02-03 18:16:16 -0500 |
commit | 0679a858c5439bf4bc05fd211d3690f82fefa5b6 (patch) | |
tree | be14ceaf88aeef764efb0521cc31fad9056fb09c | |
parent | 881e252d6b37d7526008e3dcd4592823d9273e1f (diff) |
sh: switch to generic old sigaction()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | arch/sh/Kconfig | 1 | ||||
-rw-r--r-- | arch/sh/include/asm/syscalls_32.h | 2 | ||||
-rw-r--r-- | arch/sh/include/uapi/asm/signal.h | 2 | ||||
-rw-r--r-- | arch/sh/kernel/signal_32.c | 32 | ||||
-rw-r--r-- | arch/sh/kernel/signal_64.c | 32 |
5 files changed, 3 insertions, 66 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index d69caaf818bb..b5fd9f3c9925 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -42,6 +42,7 @@ config SUPERH | |||
42 | select MODULES_USE_ELF_RELA | 42 | select MODULES_USE_ELF_RELA |
43 | select GENERIC_SIGALTSTACK | 43 | select GENERIC_SIGALTSTACK |
44 | select OLD_SIGSUSPEND | 44 | select OLD_SIGSUSPEND |
45 | select OLD_SIGACTION | ||
45 | help | 46 | help |
46 | The SuperH is a RISC processor targeted for use in embedded systems | 47 | The SuperH is a RISC processor targeted for use in embedded systems |
47 | and consumer electronics; it was also used in the Sega Dreamcast | 48 | and consumer electronics; it was also used in the Sega Dreamcast |
diff --git a/arch/sh/include/asm/syscalls_32.h b/arch/sh/include/asm/syscalls_32.h index dc72388e6e5b..4f97df87d7d5 100644 --- a/arch/sh/include/asm/syscalls_32.h +++ b/arch/sh/include/asm/syscalls_32.h | |||
@@ -9,8 +9,6 @@ | |||
9 | 9 | ||
10 | struct pt_regs; | 10 | struct pt_regs; |
11 | 11 | ||
12 | asmlinkage int sys_sigaction(int sig, const struct old_sigaction __user *act, | ||
13 | struct old_sigaction __user *oact); | ||
14 | asmlinkage int sys_sigreturn(unsigned long r4, unsigned long r5, | 12 | asmlinkage int sys_sigreturn(unsigned long r4, unsigned long r5, |
15 | unsigned long r6, unsigned long r7, | 13 | unsigned long r6, unsigned long r7, |
16 | struct pt_regs __regs); | 14 | struct pt_regs __regs); |
diff --git a/arch/sh/include/uapi/asm/signal.h b/arch/sh/include/uapi/asm/signal.h index 9ac530a90bce..cb96d02f55a4 100644 --- a/arch/sh/include/uapi/asm/signal.h +++ b/arch/sh/include/uapi/asm/signal.h | |||
@@ -5,11 +5,13 @@ | |||
5 | 5 | ||
6 | #include <asm-generic/signal.h> | 6 | #include <asm-generic/signal.h> |
7 | 7 | ||
8 | #ifndef __KERNEL__ | ||
8 | struct old_sigaction { | 9 | struct old_sigaction { |
9 | __sighandler_t sa_handler; | 10 | __sighandler_t sa_handler; |
10 | old_sigset_t sa_mask; | 11 | old_sigset_t sa_mask; |
11 | unsigned long sa_flags; | 12 | unsigned long sa_flags; |
12 | void (*sa_restorer)(void); | 13 | void (*sa_restorer)(void); |
13 | }; | 14 | }; |
15 | #endif | ||
14 | 16 | ||
15 | #endif /* __ASM_SH_SIGNAL_H */ | 17 | #endif /* __ASM_SH_SIGNAL_H */ |
diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c index c660a912a470..6af6e7c5cac8 100644 --- a/arch/sh/kernel/signal_32.c +++ b/arch/sh/kernel/signal_32.c | |||
@@ -46,38 +46,6 @@ struct fdpic_func_descriptor { | |||
46 | */ | 46 | */ |
47 | #define UNWINDGUARD 64 | 47 | #define UNWINDGUARD 64 |
48 | 48 | ||
49 | asmlinkage int | ||
50 | sys_sigaction(int sig, const struct old_sigaction __user *act, | ||
51 | struct old_sigaction __user *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 | */ |
diff --git a/arch/sh/kernel/signal_64.c b/arch/sh/kernel/signal_64.c index 8705f3ec24f4..23d4c71c91af 100644 --- a/arch/sh/kernel/signal_64.c +++ b/arch/sh/kernel/signal_64.c | |||
@@ -127,38 +127,6 @@ static void do_signal(struct pt_regs *regs) | |||
127 | restore_saved_sigmask(); | 127 | restore_saved_sigmask(); |
128 | } | 128 | } |
129 | 129 | ||
130 | asmlinkage int | ||
131 | sys_sigaction(int sig, const struct old_sigaction __user *act, | ||
132 | struct old_sigaction __user *oact) | ||
133 | { | ||
134 | struct k_sigaction new_ka, old_ka; | ||
135 | int ret; | ||
136 | |||
137 | if (act) { | ||
138 | old_sigset_t mask; | ||
139 | if (!access_ok(VERIFY_READ, act, sizeof(*act)) || | ||
140 | __get_user(new_ka.sa.sa_handler, &act->sa_handler) || | ||
141 | __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) || | ||
142 | __get_user(new_ka.sa.sa_flags, &act->sa_flags) || | ||
143 | __get_user(mask, &act->sa_mask)) | ||
144 | return -EFAULT; | ||
145 | siginitset(&new_ka.sa.sa_mask, mask); | ||
146 | } | ||
147 | |||
148 | ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); | ||
149 | |||
150 | if (!ret && oact) { | ||
151 | if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) || | ||
152 | __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || | ||
153 | __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) || | ||
154 | __put_user(old_ka.sa.sa_flags, &oact->sa_flags) || | ||
155 | __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask)) | ||
156 | return -EFAULT; | ||
157 | } | ||
158 | |||
159 | return ret; | ||
160 | } | ||
161 | |||
162 | /* | 130 | /* |
163 | * Do a signal return; undo the signal stack. | 131 | * Do a signal return; undo the signal stack. |
164 | */ | 132 | */ |