diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-05-21 23:42:15 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-06-01 12:58:49 -0400 |
commit | a610d6e672d6d3723e8da257ad4a8a288a8f2f89 (patch) | |
tree | 2fac6ce7f72756771f4f87583205cc402589dcad /arch/cris/arch-v10 | |
parent | 5754f412a3f107cbcd93ee125bef296f2a07539b (diff) |
pull clearing RESTORE_SIGMASK into block_sigmask()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/cris/arch-v10')
-rw-r--r-- | arch/cris/arch-v10/kernel/signal.c | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/arch/cris/arch-v10/kernel/signal.c b/arch/cris/arch-v10/kernel/signal.c index 09a4cf4eb08a..46c8ca605e4d 100644 --- a/arch/cris/arch-v10/kernel/signal.c +++ b/arch/cris/arch-v10/kernel/signal.c | |||
@@ -415,7 +415,7 @@ give_sigsegv: | |||
415 | * OK, we're invoking a handler | 415 | * OK, we're invoking a handler |
416 | */ | 416 | */ |
417 | 417 | ||
418 | static inline int handle_signal(int canrestart, unsigned long sig, | 418 | static inline void handle_signal(int canrestart, unsigned long sig, |
419 | siginfo_t *info, struct k_sigaction *ka, | 419 | siginfo_t *info, struct k_sigaction *ka, |
420 | struct pt_regs *regs) | 420 | struct pt_regs *regs) |
421 | { | 421 | { |
@@ -458,8 +458,6 @@ static inline int handle_signal(int canrestart, unsigned long sig, | |||
458 | 458 | ||
459 | if (ret == 0) | 459 | if (ret == 0) |
460 | block_sigmask(ka, sig); | 460 | block_sigmask(ka, sig); |
461 | |||
462 | return ret; | ||
463 | } | 461 | } |
464 | 462 | ||
465 | /* | 463 | /* |
@@ -492,15 +490,7 @@ void do_signal(int canrestart, struct pt_regs *regs) | |||
492 | signr = get_signal_to_deliver(&info, &ka, regs, NULL); | 490 | signr = get_signal_to_deliver(&info, &ka, regs, NULL); |
493 | if (signr > 0) { | 491 | if (signr > 0) { |
494 | /* Whee! Actually deliver the signal. */ | 492 | /* Whee! Actually deliver the signal. */ |
495 | if (handle_signal(canrestart, signr, &info, &ka, | 493 | handle_signal(canrestart, signr, &info, &ka, regs); |
496 | regs)) { | ||
497 | /* a signal was successfully delivered; the saved | ||
498 | * sigmask will have been stored in the signal frame, | ||
499 | * and will be restored by sigreturn, so we can simply | ||
500 | * clear the TIF_RESTORE_SIGMASK flag */ | ||
501 | if (test_thread_flag(TIF_RESTORE_SIGMASK)) | ||
502 | clear_thread_flag(TIF_RESTORE_SIGMASK); | ||
503 | } | ||
504 | return; | 494 | return; |
505 | } | 495 | } |
506 | 496 | ||