git: ede4c412b3ea - main - vfs_domount_update(): ensure that 'goto end' works

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Thu, 09 Nov 2023 20:22:01 UTC
The branch main has been updated by kib:

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

commit ede4c412b3ea9289ef42c664b01b6b5ff7eac434
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2023-11-09 20:18:47 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2023-11-09 20:18:47 +0000

    vfs_domount_update(): ensure that 'goto end' works
    
    We need to vfs_op_enter()/vn_seqc_write_start() before jumping to
    cleanup.
    
    PR:     274992
    Reported by:    trasz
    Sponsored by:   The FreeBSD Foundation
    MFC after:      3 days
    Fixes:  9ef7a491a4236810e50f0a2ee8d52f5c4bb02c64
---
 sys/kern/vfs_mount.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c
index aa4642c0ba8c..1a559bfd998e 100644
--- a/sys/kern/vfs_mount.c
+++ b/sys/kern/vfs_mount.c
@@ -1380,6 +1380,8 @@ vfs_domount_update(
 	VOP_UNLOCK(vp);
 
 	rootvp = NULL;
+	vfs_op_enter(mp);
+	vn_seqc_write_begin(vp);
 
 	if (vfs_getopt(*optlist, "fsid", (void **)&fsid_up,
 	    &fsid_up_len) == 0) {
@@ -1394,9 +1396,6 @@ vfs_domount_update(
 		vfs_deleteopt(*optlist, "fsid");
 	}
 
-	vfs_op_enter(mp);
-	vn_seqc_write_begin(vp);
-
 	MNT_ILOCK(mp);
 	if ((mp->mnt_kern_flag & MNTK_UNMOUNT) != 0) {
 		MNT_IUNLOCK(mp);