aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/signal.c')
-rw-r--r--kernel/signal.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/kernel/signal.c b/kernel/signal.c
index df8d721a9e6f..677102789cf2 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -2368,17 +2368,20 @@ relock:
2368} 2368}
2369 2369
2370/** 2370/**
2371 * block_sigmask - add @ka's signal mask to current->blocked 2371 * signal_delivered -
2372 * @ka: action for @signr 2372 * @sig: number of signal being delivered
2373 * @signr: signal that has been successfully delivered 2373 * @info: siginfo_t of signal being delivered
2374 * @ka: sigaction setting that chose the handler
2375 * @regs: user register state
2376 * @stepping: nonzero if debugger single-step or block-step in use
2374 * 2377 *
2375 * This function should be called when a signal has succesfully been 2378 * This function should be called when a signal has succesfully been
2376 * delivered. It adds the mask of signals for @ka to current->blocked 2379 * delivered. It updates the blocked signals accordingly (@ka->sa.sa_mask
2377 * so that they are blocked during the execution of the signal 2380 * is always blocked, and the signal itself is blocked unless %SA_NODEFER
2378 * handler. In addition, @signr will be blocked unless %SA_NODEFER is 2381 * is set in @ka->sa.sa_flags. Tracing is notified.
2379 * set in @ka->sa.sa_flags.
2380 */ 2382 */
2381void block_sigmask(struct k_sigaction *ka, int signr) 2383void signal_delivered(int sig, siginfo_t *info, struct k_sigaction *ka,
2384 struct pt_regs *regs, int stepping)
2382{ 2385{
2383 sigset_t blocked; 2386 sigset_t blocked;
2384 2387
@@ -2390,8 +2393,9 @@ void block_sigmask(struct k_sigaction *ka, int signr)
2390 2393
2391 sigorsets(&blocked, &current->blocked, &ka->sa.sa_mask); 2394 sigorsets(&blocked, &current->blocked, &ka->sa.sa_mask);
2392 if (!(ka->sa.sa_flags & SA_NODEFER)) 2395 if (!(ka->sa.sa_flags & SA_NODEFER))
2393 sigaddset(&blocked, signr); 2396 sigaddset(&blocked, sig);
2394 set_current_blocked(&blocked); 2397 set_current_blocked(&blocked);
2398 tracehook_signal_handler(sig, info, ka, regs, stepping);
2395} 2399}
2396 2400
2397/* 2401/*