git: 30ad8440b468 - main - VFS: require locked vnode for fsync()

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Thu, 24 Sep 2026 18:39:32 UTC
The branch main has been updated by kib:

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

commit 30ad8440b46838b050360ed87e6165a067f1cf8a
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-09-20 03:22:39 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-09-24 18:38:33 +0000

    VFS: require locked vnode for fsync()
    
    Stop exempting devfs nodes.
    
    Reviewed by:    markj
    Tested by:      pho
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D59932
---
 sys/kern/vfs_subr.c   | 20 ++++++++------------
 sys/kern/vnode_if.src |  2 +-
 2 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index f324e02e44d7..34f7b32de1b9 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -5962,8 +5962,6 @@ vop_fsync_debugprepost(struct vnode *vp, const char *name)
 {
 	struct mount *mp;
 
-	if (vp->v_type == VCHR)
-		;
 	/*
 	 * The shared vs. exclusive locking policy for fsync()
 	 * is actually determined by vp's write mount as indicated
@@ -5979,16 +5977,14 @@ vop_fsync_debugprepost(struct vnode *vp, const char *name)
 	 * should still be caught when the stacked filesystem
 	 * invokes VOP_FSYNC() on the underlying filesystem.
 	 */
-	else {
-		mp = NULL;
-		VOP_GETWRITEMOUNT(vp, &mp);
-		if (vn_lktype_write(mp, vp) == LK_SHARED)
-			ASSERT_VOP_LOCKED(vp, name);
-		else
-			ASSERT_VOP_ELOCKED(vp, name);
-		if (mp != NULL)
-			vfs_rel(mp);
-	}
+	mp = NULL;
+	VOP_GETWRITEMOUNT(vp, &mp);
+	if (vn_lktype_write(mp, vp) == LK_SHARED)
+		ASSERT_VOP_LOCKED(vp, name);
+	else
+		ASSERT_VOP_ELOCKED(vp, name);
+	if (mp != NULL)
+		vfs_rel(mp);
 }
 
 void
diff --git a/sys/kern/vnode_if.src b/sys/kern/vnode_if.src
index d20ff39b314e..96e826ec86b6 100644
--- a/sys/kern/vnode_if.src
+++ b/sys/kern/vnode_if.src
@@ -292,7 +292,7 @@ vop_revoke {
 };
 
 
-%% fsync	vp	- - -
+%% fsync	vp	L L L
 %! fsync	pre	vop_fsync_debugpre
 %! fsync	post	vop_fsync_debugpost