summaryrefslogtreecommitdiffstats
path: root/sys/alpha/osf1
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2002-08-13 06:55:28 +0000
committerjeff <jeff@FreeBSD.org>2002-08-13 06:55:28 +0000
commita996673e123dab0805b05084774227cae72d75e5 (patch)
tree9e630263213e8fdda8c938a92f150220b0eb745d /sys/alpha/osf1
parent216ea61cb629b077f8cf1b29f90f2c08ff1b1eea (diff)
downloadFreeBSD-src-a996673e123dab0805b05084774227cae72d75e5.zip
FreeBSD-src-a996673e123dab0805b05084774227cae72d75e5.tar.gz
- Hold the vnode lock throughout execve.
- Set VV_TEXT in the top level execve code. - Fixup the image activators to deal with the newly locked vnode.
Diffstat (limited to 'sys/alpha/osf1')
-rw-r--r--sys/alpha/osf1/imgact_osf1.c14
1 files changed, 1 insertions, 13 deletions
diff --git a/sys/alpha/osf1/imgact_osf1.c b/sys/alpha/osf1/imgact_osf1.c
index 3a640b4..1a44189 100644
--- a/sys/alpha/osf1/imgact_osf1.c
+++ b/sys/alpha/osf1/imgact_osf1.c
@@ -146,12 +146,11 @@ exec_osf1_imgact(struct image_params *imgp)
return(error);
}
if (imgp->vp) {
- vrele(imgp->vp);
+ vput(imgp->vp);
/* leaking in the nameizone ??? XXX */
}
imgp->vp = ndp->ni_vp;
error = exec_map_first_page(imgp);
- VOP_UNLOCK(imgp->vp, 0, FIRST_THREAD_IN_PROC(imgp->proc));
osf_auxargs->loader = "/compat/osf1/sbin/loader";
}
@@ -188,17 +187,6 @@ exec_osf1_imgact(struct image_params *imgp)
imgp->interpreted = 0;
imgp->proc->p_sysent = &osf1_sysvec;
- mp_fixme("Unlocked writecount and v_vflag access.");
- if ((eap->tsize != 0 || eap->dsize != 0) &&
- imgp->vp->v_writecount != 0) {
-#ifdef DIAGNOSTIC
- if (imgp->vp->v_vflag & VV_TEXT)
- panic("exec: a VV_TEXT vnode has writecount != 0\n");
-#endif
- return ETXTBSY;
- }
- imgp->vp->v_vflag |= VV_TEXT;
-
/* set up text segment */
if ((error = vm_mmap(&vmspace->vm_map, &taddr, tsize,
VM_PROT_READ|VM_PROT_EXECUTE, VM_PROT_ALL, MAP_FIXED|MAP_COPY,
OpenPOWER on IntegriCloud