summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/kern/kern_sig.c6
-rw-r--r--sys/kern/subr_trap.c2
2 files changed, 2 insertions, 6 deletions
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);