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/um/kernel | |
| parent | 5754f412a3f107cbcd93ee125bef296f2a07539b (diff) | |
pull clearing RESTORE_SIGMASK into block_sigmask()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/um/kernel')
| -rw-r--r-- | arch/um/kernel/signal.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/arch/um/kernel/signal.c b/arch/um/kernel/signal.c index 909e9b8d6612..549a51c8e54f 100644 --- a/arch/um/kernel/signal.c +++ b/arch/um/kernel/signal.c | |||
| @@ -22,7 +22,7 @@ EXPORT_SYMBOL(unblock_signals); | |||
| 22 | /* | 22 | /* |
| 23 | * OK, we're invoking a handler | 23 | * OK, we're invoking a handler |
| 24 | */ | 24 | */ |
| 25 | static int handle_signal(struct pt_regs *regs, unsigned long signr, | 25 | static void handle_signal(struct pt_regs *regs, unsigned long signr, |
| 26 | struct k_sigaction *ka, siginfo_t *info) | 26 | struct k_sigaction *ka, siginfo_t *info) |
| 27 | { | 27 | { |
| 28 | sigset_t *oldset = sigmask_to_save(); | 28 | sigset_t *oldset = sigmask_to_save(); |
| @@ -66,8 +66,6 @@ static int handle_signal(struct pt_regs *regs, unsigned long signr, | |||
| 66 | force_sigsegv(signr, current); | 66 | force_sigsegv(signr, current); |
| 67 | else | 67 | else |
| 68 | block_sigmask(ka, signr); | 68 | block_sigmask(ka, signr); |
| 69 | |||
| 70 | return err; | ||
| 71 | } | 69 | } |
| 72 | 70 | ||
| 73 | static int kern_do_signal(struct pt_regs *regs) | 71 | static int kern_do_signal(struct pt_regs *regs) |
| @@ -79,17 +77,7 @@ static int kern_do_signal(struct pt_regs *regs) | |||
| 79 | while ((sig = get_signal_to_deliver(&info, &ka_copy, regs, NULL)) > 0) { | 77 | while ((sig = get_signal_to_deliver(&info, &ka_copy, regs, NULL)) > 0) { |
| 80 | handled_sig = 1; | 78 | handled_sig = 1; |
| 81 | /* Whee! Actually deliver the signal. */ | 79 | /* Whee! Actually deliver the signal. */ |
| 82 | if (!handle_signal(regs, sig, &ka_copy, &info)) { | 80 | handle_signal(regs, sig, &ka_copy, &info); |
| 83 | /* | ||
| 84 | * a signal was successfully delivered; the saved | ||
| 85 | * sigmask will have been stored in the signal frame, | ||
| 86 | * and will be restored by sigreturn, so we can simply | ||
| 87 | * clear the TIF_RESTORE_SIGMASK flag | ||
| 88 | */ | ||
| 89 | if (test_thread_flag(TIF_RESTORE_SIGMASK)) | ||
| 90 | clear_thread_flag(TIF_RESTORE_SIGMASK); | ||
| 91 | break; | ||
| 92 | } | ||
| 93 | } | 81 | } |
| 94 | 82 | ||
| 95 | /* Did we come from a system call? */ | 83 | /* Did we come from a system call? */ |
