summaryrefslogtreecommitdiff
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.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index af7a32fe52db..dcc0ed3e7af9 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -1283,7 +1283,11 @@ issignal(p)
psignal(p->p_pptr, SIGCHLD);
do {
stop(p);
+ DROP_GIANT_NOSWITCH();
+ mtx_enter(&sched_lock, MTX_SPIN);
mi_switch();
+ mtx_exit(&sched_lock, MTX_SPIN);
+ PICKUP_GIANT();
} while (!trace_req(p)
&& p->p_flag & P_TRACED);
@@ -1352,7 +1356,11 @@ issignal(p)
stop(p);
if ((p->p_pptr->p_procsig->ps_flag & PS_NOCLDSTOP) == 0)
psignal(p->p_pptr, SIGCHLD);
+ DROP_GIANT_NOSWITCH();
+ mtx_enter(&sched_lock, MTX_SPIN);
mi_switch();
+ mtx_exit(&sched_lock, MTX_SPIN);
+ PICKUP_GIANT();
break;
} else if (prop & SA_IGNORE) {
/*