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) | |
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 de6897a5e5304..d4aab829c4d8c 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)  | 
