diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 82d2c73ab9d4..4784e40a06db 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -1535,11 +1535,6 @@ postsig(sig) KASSERT(sig != 0, ("postsig")); PROC_LOCK_ASSERT(p, MA_OWNED); -#ifdef KTRACE - PROC_UNLOCK(p); - mtx_lock(&Giant); - PROC_LOCK(p); -#endif ps = p->p_sigacts; SIGDELSET(p->p_siglist, sig); action = ps->ps_sigact[_SIG_IDX(sig)]; @@ -1547,7 +1542,6 @@ postsig(sig) if (KTRPOINT(p, KTR_PSIG)) ktrpsig(p->p_tracep, sig, action, p->p_flag & P_OLDMASK ? &p->p_oldsigmask : &p->p_sigmask, 0); - mtx_unlock(&Giant); #endif _STOPEVENT(p, S_SIG, sig); diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c index 7ffc5ecbeddb..899af509cdba 100644 --- a/sys/kern/subr_trap.c +++ b/sys/kern/subr_trap.c @@ -67,9 +67,11 @@ userret(p, frame, oticks) { int sig; + mtx_lock(&Giant); PROC_LOCK(p); while ((sig = CURSIG(p)) != 0) postsig(sig); + mtx_unlock(&Giant); mtx_lock_spin(&sched_lock); PROC_UNLOCK_NOSWITCH(p);