diff options
author | rwatson <rwatson@FreeBSD.org> | 2002-11-18 14:23:21 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2002-11-18 14:23:21 +0000 |
commit | 83684c4f6b928c234d78ef7b0c2b943178c3f2f4 (patch) | |
tree | fe3635ccc82d0b47e00eb6e8b7963d77a75c3bb0 | |
parent | 22e8b195a0f0ceddb6258e0732751d3f2808a173 (diff) | |
download | FreeBSD-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>
-rw-r--r-- | sys/kern/kern_fork.c | 3 |
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; |