summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_sig.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_sig.c')
-rw-r--r--sys/kern/kern_sig.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index abe10df..ef4948f 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -1917,7 +1917,6 @@ issignal(td)
if (SIGISEMPTY(sigpending)) /* no signal to send */
return (0);
sig = sig_ffs(&sigpending);
- prop = sigprop(sig);
_STOPEVENT(p, S_SIG, sig);
@@ -1953,14 +1952,6 @@ issignal(td)
mtx_lock(&ps->ps_mtx);
/*
- * If the traced bit got turned off, go back up
- * to the top to rescan signals. This ensures
- * that p_sig* and p_sigacts are consistent.
- */
- if ((p->p_flag & P_TRACED) == 0)
- continue;
-
- /*
* If parent wants us to take the signal,
* then it will leave it in p->p_xstat;
* otherwise we just look for signals again.
@@ -1971,6 +1962,14 @@ issignal(td)
continue;
/*
+ * If the traced bit got turned off, go back up
+ * to the top to rescan signals. This ensures
+ * that p_sig* and p_sigact are consistent.
+ */
+ if ((p->p_flag & P_TRACED) == 0)
+ continue;
+
+ /*
* Put the new signal into td_siglist. If the
* signal is being masked, look for other signals.
*/
@@ -1980,6 +1979,8 @@ issignal(td)
signotify(td);
}
+ prop = sigprop(sig);
+
/*
* Decide whether the signal should be returned.
* Return the signal's number, or fall through
OpenPOWER on IntegriCloud