summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_exec.c
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>2001-10-24 01:05:39 +0000
committerdillon <dillon@FreeBSD.org>2001-10-24 01:05:39 +0000
commit016be1f136b003c5977295befc796d712cf358db (patch)
treeed7e8fddba779e6ae62cdf79fa92de3ef165b5f4 /sys/kern/kern_exec.c
parent24245013268a99a0d94d53046ac8844b363fa0f8 (diff)
downloadFreeBSD-src-016be1f136b003c5977295befc796d712cf358db.zip
FreeBSD-src-016be1f136b003c5977295befc796d712cf358db.tar.gz
Fix ktrace enablement/disablement races that can result in a vnode
ref count panic. Bug noticed by: ps Reviewed by: ps MFC after: 1 day
Diffstat (limited to 'sys/kern/kern_exec.c')
-rw-r--r--sys/kern/kern_exec.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index 32df1c2..0e5fb94 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -335,9 +335,13 @@ interpret:
*/
setsugid(p);
if (p->p_tracep && suser_xxx(oldcred, NULL, PRISON_ROOT)) {
- p->p_traceflag = 0;
- vrele(p->p_tracep);
- p->p_tracep = NULL;
+ struct vnode *vtmp;
+
+ if ((vtmp = p->p_tracep) != NULL) {
+ p->p_tracep = NULL;
+ p->p_traceflag = 0;
+ vrele(vtmp);
+ }
}
/*
* Set the new credentials.
OpenPOWER on IntegriCloud