aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_exit.c
diff options
context:
space:
mode:
authorJeff Roberson <jeff@FreeBSD.org>2003-04-01 01:26:20 +0000
committerJeff Roberson <jeff@FreeBSD.org>2003-04-01 01:26:20 +0000
commit2c10d16a4b41a67ba9a19a03b80f3da3e0d44c06 (patch)
treefe9429d1c952f94fe7724a5e8d93774c365108da /sys/kern/kern_exit.c
parent8af830c3744a32792a470c54d0c7528b06fe9a30 (diff)
downloadsrc-2c10d16a4b41a67ba9a19a03b80f3da3e0d44c06.tar.gz
src-2c10d16a4b41a67ba9a19a03b80f3da3e0d44c06.zip
Notes
Diffstat (limited to 'sys/kern/kern_exit.c')
-rw-r--r--sys/kern/kern_exit.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index dd537b25592a..fee6caf62a9f 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -129,15 +129,17 @@ exit1(struct thread *td, int rv)
}
/*
- * XXXKSE: MUST abort all other threads before proceeding past here.
+ * MUST abort all other threads before proceeding past here.
*/
PROC_LOCK(p);
- if (p->p_flag & P_THREADED) {
+ if (p->p_flag & P_THREADED || p->p_numthreads > 1) {
/*
* First check if some other thread got here before us..
* if so, act apropriatly, (exit or suspend);
*/
+ DROP_GIANT();
thread_suspend_check(0);
+ PICKUP_GIANT();
/*
* Kill off the other threads. This requires