The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=ed87040311b88e2c95a791aa049f2c37c857f048
commit ed87040311b88e2c95a791aa049f2c37c857f048 Author: Konstantin Belousov <[email protected]> AuthorDate: 2026-03-05 02:57:34 +0000 Commit: Konstantin Belousov <[email protected]> CommitDate: 2026-03-05 23:46:53 +0000 zfs rename: properly cleanup on errors occuring before zfs_do_rename() Reported and tested by: arrowd Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D55539 --- .../openzfs/module/os/freebsd/zfs/zfs_vnops_os.c | 23 +++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c b/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c index 05ac77741d4f..31654ec82392 100644 --- a/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c +++ b/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c @@ -5527,15 +5527,24 @@ zfs_freebsd_rename(struct vop_rename_args *ap) } #endif - if (error == 0) + if (error == 0) { error = zfs_do_rename(fdvp, &fvp, ap->a_fcnp, tdvp, &tvp, ap->a_tcnp, ap->a_fcnp->cn_cred); - - vrele(fdvp); - vrele(fvp); - vrele(tdvp); - if (tvp != NULL) - vrele(tvp); + vrele(fdvp); + vrele(fvp); + vrele(tdvp); + if (tvp != NULL) + vrele(tvp); + } else { + if (tdvp == tvp) + vrele(tdvp); + else + vput(tdvp); + if (tvp != NULL) + vput(tvp); + vrele(fdvp); + vrele(fvp); + } return (error); }
