summaryrefslogtreecommitdiff
path: root/sys/kern/kern_exit.c
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2003-04-23 18:46:51 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2003-04-23 18:46:51 +0000
commit112afcb232ba371d79e63b19da46593e8a55639c (patch)
tree5c78b6b61269a52d4ec630fce94d68d022ec3511 /sys/kern/kern_exit.c
parent79db6ff316594d4824b278a3e3186fae7398b9bc (diff)
Notes
Diffstat (limited to 'sys/kern/kern_exit.c')
-rw-r--r--sys/kern/kern_exit.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index 187364b72ab0..8e16d3e1885d 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -698,9 +698,11 @@ loop:
mtx_unlock(&Giant);
return (0);
}
+ mtx_lock_spin(&sched_lock);
if (P_SHOULDSTOP(p) && (p->p_suspcount == p->p_numthreads) &&
((p->p_flag & P_WAITED) == 0) &&
(p->p_flag & P_TRACED || uap->options & WUNTRACED)) {
+ mtx_unlock_spin(&sched_lock);
p->p_flag |= P_WAITED;
sx_xunlock(&proctree_lock);
td->td_retval[0] = p->p_pid;
@@ -723,6 +725,7 @@ loop:
mtx_unlock(&Giant);
return (error);
}
+ mtx_unlock_spin(&sched_lock);
if (uap->options & WCONTINUED && (p->p_flag & P_CONTINUED)) {
sx_xunlock(&proctree_lock);
td->td_retval[0] = p->p_pid;