diff options
author | jhb <jhb@FreeBSD.org> | 2001-02-09 16:43:18 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2001-02-09 16:43:18 +0000 |
commit | fc07dbfd4f24f273b1dac84d1ebca3a534e821bc (patch) | |
tree | 9fe7a3c9d4ee91010827045bd463e43c8c0c79a0 /sys/kern/kern_exit.c | |
parent | bd959765721d23722c72ba9fddc4b0a6db6327b9 (diff) | |
download | FreeBSD-src-fc07dbfd4f24f273b1dac84d1ebca3a534e821bc.zip FreeBSD-src-fc07dbfd4f24f273b1dac84d1ebca3a534e821bc.tar.gz |
Release the proc lock around crfree() and uifree() in wait1(). It leads to
a lock order violation, and since p is already a zombie at this point,
I'm not sure that we even need all the locking currently in wait1().
Diffstat (limited to 'sys/kern/kern_exit.c')
-rw-r--r-- | sys/kern/kern_exit.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index 71e6288..24a4753 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -521,8 +521,10 @@ loop: */ PROC_LOCK(p); if (--p->p_cred->p_refcnt == 0) { + PROC_UNLOCK(p); crfree(p->p_ucred); uifree(p->p_cred->p_uidinfo); + PROC_LOCK(p); FREE(p->p_cred, M_SUBPROC); p->p_cred = NULL; } |