AVFS: reinitialize lookup object before reuse
This commit is contained in:
parent
e93c1c9f28
commit
0c99f4f4b7
2 changed files with 3 additions and 6 deletions
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue