diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-04-27 13:58:59 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-06-01 12:58:51 -0400 |
commit | 77097ae503b170120ab66dd1d547f8577193f91f (patch) | |
tree | bee5b2e8d91b9ec8ab74c58cbec1796c7bacc2e5 /arch/cris | |
parent | edd63a2763bdae0daa4f0a4d4c5d61d1154352a5 (diff) |
most of set_current_blocked() callers want SIGKILL/SIGSTOP removed from set
Only 3 out of 63 do not. Renamed the current variant to __set_current_blocked(),
added set_current_blocked() that will exclude unblockable signals, switched
open-coded instances to it.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/cris')
-rw-r--r-- | arch/cris/arch-v10/kernel/signal.c | 4 | ||||
-rw-r--r-- | arch/cris/arch-v32/kernel/signal.c | 5 |
2 files changed, 0 insertions, 9 deletions
diff --git a/arch/cris/arch-v10/kernel/signal.c b/arch/cris/arch-v10/kernel/signal.c index 46c8ca605e4d..cf6380cb9a57 100644 --- a/arch/cris/arch-v10/kernel/signal.c +++ b/arch/cris/arch-v10/kernel/signal.c | |||
@@ -31,8 +31,6 @@ | |||
31 | 31 | ||
32 | #define DEBUG_SIG 0 | 32 | #define DEBUG_SIG 0 |
33 | 33 | ||
34 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) | ||
35 | |||
36 | /* a syscall in Linux/CRIS is a break 13 instruction which is 2 bytes */ | 34 | /* a syscall in Linux/CRIS is a break 13 instruction which is 2 bytes */ |
37 | /* manipulate regs so that upon return, it will be re-executed */ | 35 | /* manipulate regs so that upon return, it will be re-executed */ |
38 | 36 | ||
@@ -176,7 +174,6 @@ asmlinkage int sys_sigreturn(long r10, long r11, long r12, long r13, long mof, | |||
176 | sizeof(frame->extramask)))) | 174 | sizeof(frame->extramask)))) |
177 | goto badframe; | 175 | goto badframe; |
178 | 176 | ||
179 | sigdelsetmask(&set, ~_BLOCKABLE); | ||
180 | set_current_blocked(&set); | 177 | set_current_blocked(&set); |
181 | 178 | ||
182 | if (restore_sigcontext(regs, &frame->sc)) | 179 | if (restore_sigcontext(regs, &frame->sc)) |
@@ -212,7 +209,6 @@ asmlinkage int sys_rt_sigreturn(long r10, long r11, long r12, long r13, | |||
212 | if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) | 209 | if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) |
213 | goto badframe; | 210 | goto badframe; |
214 | 211 | ||
215 | sigdelsetmask(&set, ~_BLOCKABLE); | ||
216 | set_current_blocked(&set); | 212 | set_current_blocked(&set); |
217 | 213 | ||
218 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) | 214 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) |
diff --git a/arch/cris/arch-v32/kernel/signal.c b/arch/cris/arch-v32/kernel/signal.c index e0431328b7cd..07b81ee09f65 100644 --- a/arch/cris/arch-v32/kernel/signal.c +++ b/arch/cris/arch-v32/kernel/signal.c | |||
@@ -24,9 +24,6 @@ | |||
24 | 24 | ||
25 | extern unsigned long cris_signal_return_page; | 25 | extern unsigned long cris_signal_return_page; |
26 | 26 | ||
27 | /* Flag to check if a signal is blockable. */ | ||
28 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) | ||
29 | |||
30 | /* | 27 | /* |
31 | * A syscall in CRIS is really a "break 13" instruction, which is 2 | 28 | * A syscall in CRIS is really a "break 13" instruction, which is 2 |
32 | * bytes. The registers is manipulated so upon return the instruction | 29 | * bytes. The registers is manipulated so upon return the instruction |
@@ -167,7 +164,6 @@ sys_sigreturn(long r10, long r11, long r12, long r13, long mof, long srp, | |||
167 | sizeof(frame->extramask)))) | 164 | sizeof(frame->extramask)))) |
168 | goto badframe; | 165 | goto badframe; |
169 | 166 | ||
170 | sigdelsetmask(&set, ~_BLOCKABLE); | ||
171 | set_current_blocked(&set); | 167 | set_current_blocked(&set); |
172 | 168 | ||
173 | if (restore_sigcontext(regs, &frame->sc)) | 169 | if (restore_sigcontext(regs, &frame->sc)) |
@@ -208,7 +204,6 @@ sys_rt_sigreturn(long r10, long r11, long r12, long r13, long mof, long srp, | |||
208 | if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) | 204 | if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) |
209 | goto badframe; | 205 | goto badframe; |
210 | 206 | ||
211 | sigdelsetmask(&set, ~_BLOCKABLE); | ||
212 | set_current_blocked(&set); | 207 | set_current_blocked(&set); |
213 | 208 | ||
214 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) | 209 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) |