diff options
Diffstat (limited to 'sys/kern/kern_sig.c')
-rw-r--r-- | sys/kern/kern_sig.c | 19 |
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 |