diff options
author | Tor Egge <tegge@FreeBSD.org> | 2006-05-05 20:25:05 +0000 |
---|---|---|
committer | Tor Egge <tegge@FreeBSD.org> | 2006-05-05 20:25:05 +0000 |
commit | d302786c872880786f2386f142ce4966f96fb91d (patch) | |
tree | c3b6f91b246648fbe6a9b1e092acec79851a67ac /sys/kern/kern_exec.c | |
parent | e9b54d9c8f6f9b2e7a7376d8200cbc7d44aa25b9 (diff) | |
download | src-d302786c872880786f2386f142ce4966f96fb91d.tar.gz src-d302786c872880786f2386f142ce4966f96fb91d.zip |
Notes
Diffstat (limited to 'sys/kern/kern_exec.c')
-rw-r--r-- | sys/kern/kern_exec.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index de6897a5e530..d4aab829c4d8 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -487,7 +487,9 @@ interpret: } /* close files on exec */ + VOP_UNLOCK(imgp->vp, 0, td); fdcloseexec(td); + vn_lock(imgp->vp, LK_EXCLUSIVE | LK_RETRY, td); /* Get a reference to the vnode prior to locking the proc */ VREF(ndp->ni_vp); @@ -582,7 +584,9 @@ interpret: */ PROC_UNLOCK(p); setugidsafety(td); + VOP_UNLOCK(imgp->vp, 0, td); error = fdcheckstd(td); + vn_lock(imgp->vp, LK_EXCLUSIVE | LK_RETRY, td); if (error != 0) goto done1; PROC_LOCK(p); @@ -714,6 +718,7 @@ done1: crfree(oldcred); else crfree(newcred); + VOP_UNLOCK(imgp->vp, 0, td); /* * Handle deferred decrement of ref counts. */ @@ -732,6 +737,7 @@ done1: if (tracecred != NULL) crfree(tracecred); #endif + vn_lock(imgp->vp, LK_EXCLUSIVE | LK_RETRY, td); if (oldargs != NULL) pargs_drop(oldargs); if (newargs != NULL) |