Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 05 Mar 2026 23:48:16 +0000
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: ed87040311b8 - main - zfs rename: properly cleanup on errors occuring before zfs_do_rename()
Message-ID:  <69aa1640.3f286.50f64742@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=ed87040311b88e2c95a791aa049f2c37c857f048

commit ed87040311b88e2c95a791aa049f2c37c857f048
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-03-05 02:57:34 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
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);
 }


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69aa1640.3f286.50f64742>