git: 0b0bbdac18d1 - stable/15 - zfs rename: properly cleanup on errors occuring before zfs_do_rename()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 10 Mar 2026 11:43:35 UTC
The branch stable/15 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=0b0bbdac18d153e365e20989e23636d51214f972
commit 0b0bbdac18d153e365e20989e23636d51214f972
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-03-05 02:57:34 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-03-10 11:41:31 +0000
zfs rename: properly cleanup on errors occuring before zfs_do_rename()
(cherry picked from commit ed87040311b88e2c95a791aa049f2c37c857f048)
---
.../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 42565b579de7..7ea6f119130b 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
@@ -5518,15 +5518,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);
}