AVFS: reinitialize lookup object before reuse

This commit is contained in:
Thomas Veerman 2012-02-10 09:35:19 +00:00
parent e93c1c9f28
commit 0c99f4f4b7
2 changed files with 3 additions and 6 deletions

View file

@ -191,12 +191,9 @@ PUBLIC int do_rename()
user is allowed to rename */
if ((old_dirp->v_mode & S_ISVTX) == S_ISVTX) {
/* Look up inode of file to unlink to retrieve owner */
resolve.l_flags = PATH_RET_SYMLINK;
resolve.l_vmp = &vmp2; /* Shouldn't actually get locked */
lookup_init(&resolve, resolve.l_path, PATH_RET_SYMLINK, &vmp2, &vp);
resolve.l_vmnt_lock = VMNT_READ;
resolve.l_vnode = &vp;
resolve.l_vnode_lock = VNODE_READ;
resolve.l_flags = PATH_RET_SYMLINK;
vp = advance(old_dirp, &resolve, fp);
assert(vmp2 == NULL);
if (vp != NULL) {

View file

@ -317,8 +317,8 @@ PRIVATE struct vnode *new_node(struct lookup *resolve, int oflags, mode_t bits)
if ((dirp = last_dir(&findnode, fp)) == NULL) return(NULL);
/* The final directory is accessible. Get final component of the path. */
findnode.l_vmp = &vp_vmp;
findnode.l_vnode = &vp;
lookup_init(&findnode, findnode.l_path, findnode.l_flags, &vp_vmp, &vp);
findnode.l_vmnt_lock = VMNT_WRITE;
findnode.l_vnode_lock = (oflags & O_TRUNC) ? VNODE_WRITE : VNODE_OPCL;
vp = advance(dirp, &findnode, fp);
assert(vp_vmp == NULL); /* Lookup to last dir should have yielded lock