mirror of
https://github.com/opnsense/src.git
synced 2026-06-08 16:22:46 -04:00
Obtained from:4.4lite2
fix a change where a shortcut resulted in teh wrong answer.. e.g. touch a touch b mv a b resulted in b being removed and a being moved to b in the shortcut.. touch a ln a b mv a b the wrong link was removed.. leaving a instead of b, giving a different result to when both files were separate.
This commit is contained in:
parent
b7935a74ba
commit
f3c3ae3c38
1 changed files with 14 additions and 10 deletions
|
|
@ -36,7 +36,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)ufs_vnops.c 8.10 (Berkeley) 4/1/94
|
||||
* $Id: ufs_vnops.c,v 1.27 1995/08/28 09:19:17 julian Exp $
|
||||
* $Id: ufs_vnops.c,v 1.28 1995/09/04 00:21:11 dyson Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
|
|
@ -808,18 +808,22 @@ abortit:
|
|||
error = EINVAL;
|
||||
goto abortit;
|
||||
}
|
||||
VOP_ABORTOP(fdvp, fcnp);
|
||||
vrele(fdvp);
|
||||
vrele(fvp);
|
||||
|
||||
/* Release destination completely. */
|
||||
VOP_ABORTOP(tdvp, tcnp);
|
||||
vput(tdvp);
|
||||
vput(tvp);
|
||||
tcnp->cn_flags &= ~MODMASK;
|
||||
tcnp->cn_flags |= LOCKPARENT | LOCKLEAF;
|
||||
if ((tcnp->cn_flags & SAVESTART) == 0)
|
||||
|
||||
/* Delete source. */
|
||||
vrele(fdvp);
|
||||
vrele(fvp);
|
||||
fcnp->cn_flags &= ~MODMASK;
|
||||
fcnp->cn_flags |= LOCKPARENT | LOCKLEAF;
|
||||
if ((fcnp->cn_flags & SAVESTART) == 0)
|
||||
panic("ufs_rename: lost from startdir");
|
||||
tcnp->cn_nameiop = DELETE;
|
||||
(void) relookup(tdvp, &tvp, tcnp);
|
||||
return (VOP_REMOVE(tdvp, tvp, tcnp));
|
||||
fcnp->cn_nameiop = DELETE;
|
||||
(void) relookup(fdvp, &fvp, fcnp);
|
||||
return (VOP_REMOVE(fdvp, fvp, fcnp));
|
||||
}
|
||||
error = VOP_LOCK(fvp);
|
||||
if (error)
|
||||
|
|
|
|||
Loading…
Reference in a new issue