git: 592ed51533a2 - stable/15 - VFS: require locked vnode for fsync()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 01 Oct 2026 01:17:18 UTC
The branch stable/15 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=592ed51533a2e333efbe48277af9b6530de139d6
commit 592ed51533a2e333efbe48277af9b6530de139d6
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-09-20 03:22:39 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-09-30 21:37:19 +0000
VFS: require locked vnode for fsync()
(cherry picked from commit 30ad8440b46838b050360ed87e6165a067f1cf8a)
---
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 0e3376929cdb..b11ae42eb1a7 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -5925,8 +5925,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
@@ -5942,16 +5940,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