diff options
Diffstat (limited to 'arch/hexagon/kernel/signal.c')
-rw-r--r-- | arch/hexagon/kernel/signal.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/arch/hexagon/kernel/signal.c b/arch/hexagon/kernel/signal.c index acd6272913b3..f73fcee09bac 100644 --- a/arch/hexagon/kernel/signal.c +++ b/arch/hexagon/kernel/signal.c | |||
@@ -150,7 +150,7 @@ sigsegv: | |||
150 | * Setup invocation of signal handler | 150 | * Setup invocation of signal handler |
151 | */ | 151 | */ |
152 | static int handle_signal(int sig, siginfo_t *info, struct k_sigaction *ka, | 152 | static int handle_signal(int sig, siginfo_t *info, struct k_sigaction *ka, |
153 | sigset_t *oldset, struct pt_regs *regs) | 153 | struct pt_regs *regs) |
154 | { | 154 | { |
155 | int rc; | 155 | int rc; |
156 | 156 | ||
@@ -186,7 +186,7 @@ static int handle_signal(int sig, siginfo_t *info, struct k_sigaction *ka, | |||
186 | * Set up the stack frame; not doing the SA_SIGINFO thing. We | 186 | * Set up the stack frame; not doing the SA_SIGINFO thing. We |
187 | * only set up the rt_frame flavor. | 187 | * only set up the rt_frame flavor. |
188 | */ | 188 | */ |
189 | rc = setup_rt_frame(sig, ka, info, oldset, regs); | 189 | rc = setup_rt_frame(sig, ka, info, sigmask_to_save(), regs); |
190 | 190 | ||
191 | /* If there was an error on setup, no signal was delivered. */ | 191 | /* If there was an error on setup, no signal was delivered. */ |
192 | if (rc) | 192 | if (rc) |
@@ -215,14 +215,7 @@ static void do_signal(struct pt_regs *regs) | |||
215 | signo = get_signal_to_deliver(&info, &sigact, regs, NULL); | 215 | signo = get_signal_to_deliver(&info, &sigact, regs, NULL); |
216 | 216 | ||
217 | if (signo > 0) { | 217 | if (signo > 0) { |
218 | sigset_t *oldset; | 218 | if (handle_signal(signo, &info, &sigact, regs) == 0) { |
219 | |||
220 | if (test_thread_flag(TIF_RESTORE_SIGMASK)) | ||
221 | oldset = ¤t->saved_sigmask; | ||
222 | else | ||
223 | oldset = ¤t->blocked; | ||
224 | |||
225 | if (handle_signal(signo, &info, &sigact, oldset, regs) == 0) { | ||
226 | /* | 219 | /* |
227 | * Successful delivery case. The saved sigmask is | 220 | * Successful delivery case. The saved sigmask is |
228 | * stored in the signal frame, and will be restored | 221 | * stored in the signal frame, and will be restored |