aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro2012-05-02 08:59:21 -0500
committerAl Viro2012-06-01 11:58:48 -0500
commitb7f9a11a6cf1ea9ee6be3eb2b90d91327a09ad14 (patch)
tree7d5a5f469aea8ac2b3e1ab41e05a6abafcb2b694 /arch/score
parent51a7b448d4134e3e8eec633435e3e8faee14a828 (diff)
downloadam43-linux-kernel-b7f9a11a6cf1ea9ee6be3eb2b90d91327a09ad14.tar.gz
am43-linux-kernel-b7f9a11a6cf1ea9ee6be3eb2b90d91327a09ad14.tar.xz
am43-linux-kernel-b7f9a11a6cf1ea9ee6be3eb2b90d91327a09ad14.zip
new helper: sigmask_to_save()
replace boilerplate "should we use ->saved_sigmask or ->blocked?" with calls of obvious inlined helper... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/score')
-rw-r--r--arch/score/kernel/signal.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/arch/score/kernel/signal.c b/arch/score/kernel/signal.c
index 9e751559375..b24dfaf2462 100644
--- a/arch/score/kernel/signal.c
+++ b/arch/score/kernel/signal.c
@@ -242,7 +242,7 @@ give_sigsegv:
242} 242}
243 243
244static int handle_signal(unsigned long sig, siginfo_t *info, 244static int handle_signal(unsigned long sig, siginfo_t *info,
245 struct k_sigaction *ka, sigset_t *oldset, struct pt_regs *regs) 245 struct k_sigaction *ka, struct pt_regs *regs)
246{ 246{
247 int ret; 247 int ret;
248 248
@@ -269,7 +269,7 @@ static int handle_signal(unsigned long sig, siginfo_t *info,
269 /* 269 /*
270 * Set up the stack frame 270 * Set up the stack frame
271 */ 271 */
272 ret = setup_rt_frame(ka, regs, sig, oldset, info); 272 ret = setup_rt_frame(ka, regs, sig, sigmask_to_save(), info);
273 273
274 if (ret == 0) 274 if (ret == 0)
275 block_sigmask(ka, sig); 275 block_sigmask(ka, sig);
@@ -280,7 +280,6 @@ static int handle_signal(unsigned long sig, siginfo_t *info,
280static void do_signal(struct pt_regs *regs) 280static void do_signal(struct pt_regs *regs)
281{ 281{
282 struct k_sigaction ka; 282 struct k_sigaction ka;
283 sigset_t *oldset;
284 siginfo_t info; 283 siginfo_t info;
285 int signr; 284 int signr;
286 285
@@ -292,15 +291,10 @@ static void do_signal(struct pt_regs *regs)
292 if (!user_mode(regs)) 291 if (!user_mode(regs))
293 return; 292 return;
294 293
295 if (test_thread_flag(TIF_RESTORE_SIGMASK))
296 oldset = &current->saved_sigmask;
297 else
298 oldset = &current->blocked;
299
300 signr = get_signal_to_deliver(&info, &ka, regs, NULL); 294 signr = get_signal_to_deliver(&info, &ka, regs, NULL);
301 if (signr > 0) { 295 if (signr > 0) {
302 /* Actually deliver the signal. */ 296 /* Actually deliver the signal. */
303 if (handle_signal(signr, &info, &ka, oldset, regs) == 0) { 297 if (handle_signal(signr, &info, &ka, regs) == 0) {
304 /* 298 /*
305 * A signal was successfully delivered; the saved 299 * A signal was successfully delivered; the saved
306 * sigmask will have been stored in the signal frame, 300 * sigmask will have been stored in the signal frame,