diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2022-12-14 09:34:53 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2022-12-19 08:09:37 +0000 |
commit | 56da4aa5545f9fa968f1d924d01db8939c401c15 (patch) | |
tree | eebc004ee17322bd2117725946a939c3bc7e3043 | |
parent | 8f874e92ebc9e75b5dd7935a042cf016be19fb38 (diff) | |
download | src-56da4aa5545f9fa968f1d924d01db8939c401c15.tar.gz src-56da4aa5545f9fa968f1d924d01db8939c401c15.zip |
vfs: stop using SAVESTART for rename
ni_startdir has never reached rename routines anyway
Reviewed by: mckusick
Tested by: pho
Differential Revision: https://reviews.freebsd.org/D34468
-rw-r--r-- | sys/fs/msdosfs/msdosfs_vnops.c | 2 | ||||
-rw-r--r-- | sys/kern/vfs_syscalls.c | 16 | ||||
-rw-r--r-- | sys/ufs/ufs/ufs_vnops.c | 2 |
3 files changed, 4 insertions, 16 deletions
diff --git a/sys/fs/msdosfs/msdosfs_vnops.c b/sys/fs/msdosfs/msdosfs_vnops.c index 8fb58a58b138..9084c1829acc 100644 --- a/sys/fs/msdosfs/msdosfs_vnops.c +++ b/sys/fs/msdosfs/msdosfs_vnops.c @@ -1127,8 +1127,6 @@ relock: } if (error != 0) goto unlock; - if ((tcnp->cn_flags & SAVESTART) == 0) - panic("msdosfs_rename: lost to startdir"); } if (tip != NULL) { diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index b3223e620962..fa5888ad836c 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -3637,8 +3637,8 @@ kern_renameat_mac(struct thread *td, int oldfd, const char *old, int newfd, { int error; - NDINIT_ATRIGHTS(fromnd, DELETE, LOCKPARENT | LOCKLEAF | SAVESTART | - AUDITVNODE1, pathseg, old, oldfd, &cap_renameat_source_rights); + NDINIT_ATRIGHTS(fromnd, DELETE, LOCKPARENT | LOCKLEAF | AUDITVNODE1, + pathseg, old, oldfd, &cap_renameat_source_rights); if ((error = namei(fromnd)) != 0) return (error); error = mac_vnode_check_rename_from(td->td_ucred, fromnd->ni_dvp, @@ -3650,8 +3650,6 @@ kern_renameat_mac(struct thread *td, int oldfd, const char *old, int newfd, NDFREE_PNBUF(fromnd); vrele(fromnd->ni_dvp); vrele(fromnd->ni_vp); - if (fromnd->ni_startdir) - vrele(fromnd->ni_startdir); } return (error); } @@ -3677,7 +3675,7 @@ again: return (error); } else { #endif - NDINIT_ATRIGHTS(&fromnd, DELETE, WANTPARENT | SAVESTART | AUDITVNODE1, + NDINIT_ATRIGHTS(&fromnd, DELETE, WANTPARENT | AUDITVNODE1, pathseg, old, oldfd, &cap_renameat_source_rights); if ((error = namei(&fromnd)) != 0) return (error); @@ -3685,7 +3683,7 @@ again: } #endif fvp = fromnd.ni_vp; - tondflags = LOCKPARENT | LOCKLEAF | NOCACHE | SAVESTART | AUDITVNODE2; + tondflags = LOCKPARENT | LOCKLEAF | NOCACHE | AUDITVNODE2; if (fromnd.ni_vp->v_type == VDIR) tondflags |= WILLBEDIR; NDINIT_ATRIGHTS(&tond, RENAME, tondflags, pathseg, new, newfd, @@ -3713,9 +3711,6 @@ again: vput(tdvp); vrele(fromnd.ni_dvp); vrele(fvp); - vrele(tond.ni_startdir); - if (fromnd.ni_startdir != NULL) - vrele(fromnd.ni_startdir); error = vn_start_write(NULL, &mp, V_XSLEEP | V_PCATCH); if (error != 0) return (error); @@ -3775,11 +3770,8 @@ out: vrele(fromnd.ni_dvp); vrele(fvp); } - vrele(tond.ni_startdir); vn_finished_write(mp); out1: - if (fromnd.ni_startdir) - vrele(fromnd.ni_startdir); if (error == ERESTART) return (0); if (error == ERELOOKUP) diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c index 9ea38bc149a5..ecb8cb6900ca 100644 --- a/sys/ufs/ufs/ufs_vnops.c +++ b/sys/ufs/ufs/ufs_vnops.c @@ -1510,8 +1510,6 @@ relock: } if (error) goto unlockout; - if ((tcnp->cn_flags & SAVESTART) == 0) - panic("ufs_rename: lost to startdir"); } if (fip->i_effnlink == 0 || fdp->i_effnlink == 0 || tdp->i_effnlink == 0) |