summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2002-11-18 14:23:21 +0000
committerrwatson <rwatson@FreeBSD.org>2002-11-18 14:23:21 +0000
commit83684c4f6b928c234d78ef7b0c2b943178c3f2f4 (patch)
treefe3635ccc82d0b47e00eb6e8b7963d77a75c3bb0 /sys
parent22e8b195a0f0ceddb6258e0732751d3f2808a173 (diff)
downloadFreeBSD-src-83684c4f6b928c234d78ef7b0c2b943178c3f2f4.zip
FreeBSD-src-83684c4f6b928c234d78ef7b0c2b943178c3f2f4.tar.gz
We leaked a process lock reference in the event an RFTHREAD process
leader wasn't exiting during a fork; instead, do remember to release the lock avoiding lock order reversals and recursion panic. Reported by: "Joel M. Baldwin" <qumqats@outel.org>
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/kern_fork.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c
index 2f93823..14695fb 100644
--- a/sys/kern/kern_fork.c
+++ b/sys/kern/kern_fork.c
@@ -587,7 +587,8 @@ again:
PROC_LOCK(p2);
psignal(p2, SIGKILL);
PROC_UNLOCK(p2);
- }
+ } else
+ PROC_UNLOCK(p1->p_leader);
} else {
p2->p_peers = NULL;
p2->p_leader = p2;
OpenPOWER on IntegriCloud