diff options
| author | Robert Watson <rwatson@FreeBSD.org> | 2004-01-08 22:44:54 +0000 |
|---|---|---|
| committer | Robert Watson <rwatson@FreeBSD.org> | 2004-01-08 22:44:54 +0000 |
| commit | 047aa39b25debea7293864a877fa6a4bc931ec82 (patch) | |
| tree | abc18c56335163ce077038490574df6710ea1a91 | |
| parent | ed283fb5068655fcd5b054645e61fefda42505f1 (diff) | |
Notes
| -rw-r--r-- | sys/kern/kern_sig.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 7ad7dcca7644..bf822d10e7b2 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -2080,7 +2080,11 @@ issignal(td) return (0); sig = sig_ffs(&sigpending); - _STOPEVENT(p, S_SIG, sig); + if (p->p_stops & S_SIG) { + mtx_unlock(&ps->ps_mtx); + stopevent(p, S_SIG, sig); + mtx_lock(&ps->ps_mtx); + } /* * We should see pending but ignored signals @@ -2296,7 +2300,11 @@ postsig(sig) ktrpsig(sig, action, td->td_pflags & TDP_OLDMASK ? &td->td_oldsigmask : &td->td_sigmask, 0); #endif - _STOPEVENT(p, S_SIG, sig); + if (p->p_stops & S_SIG) { + mtx_unlock(&ps->ps_mtx); + stopevent(p, S_SIG, sig); + mtx_lock(&ps->ps_mtx); + } if (!(td->td_flags & TDF_SA && td->td_mailbox) && action == SIG_DFL) { |
