diff options
| author | Jeff Roberson <jeff@FreeBSD.org> | 2002-07-06 07:00:01 +0000 |
|---|---|---|
| committer | Jeff Roberson <jeff@FreeBSD.org> | 2002-07-06 07:00:01 +0000 |
| commit | 0b2ed1aef70a66f4b258fad3488624710dba5590 (patch) | |
| tree | 85e4e496d113cb252366300989c7f835842a160a /sys/kern/kern_exec.c | |
| parent | e818064e986d46f07b0696142d2b616a555d2685 (diff) | |
Notes
Diffstat (limited to 'sys/kern/kern_exec.c')
| -rw-r--r-- | sys/kern/kern_exec.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index a533d866bce9..8682d62359bf 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -182,6 +182,7 @@ execve(td, uap) imgp->interpreter_name[0] = '\0'; imgp->auxargs = NULL; imgp->vp = NULL; + imgp->object = NULL; imgp->firstpage = NULL; imgp->ps_strings = 0; imgp->auxarg_size = 0; @@ -227,6 +228,8 @@ interpret: VOP_UNLOCK(imgp->vp, 0, td); goto exec_fail_dealloc; } + VOP_GETVOBJECT(imgp->vp, &imgp->object); + vm_object_reference(imgp->object); error = exec_map_first_page(imgp); VOP_UNLOCK(imgp->vp, 0, td); @@ -270,6 +273,8 @@ interpret: /* free name buffer and old vnode */ NDFREE(ndp, NDF_ONLY_PNBUF); vrele(ndp->ni_vp); + vm_object_deallocate(imgp->object); + imgp->object = NULL; /* set new name to that of the interpreter */ NDINIT(ndp, LOOKUP, LOCKLEAF | FOLLOW | SAVENAME, UIO_SYSSPACE, imgp->interpreter_name, td); @@ -519,6 +524,9 @@ exec_fail_dealloc: vrele(imgp->vp); } + if (imgp->object) + vm_object_deallocate(imgp->object); + if (error == 0) goto done2; |
