]> Gentwo Git Trees - linux/.git/commitdiff
fs/ntfs3: check for shutdown in fsync
authorKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Thu, 6 Nov 2025 13:17:19 +0000 (16:17 +0300)
committerKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Wed, 19 Nov 2025 08:21:36 +0000 (09:21 +0100)
Ensure fsync() returns -EIO when the ntfs3 filesystem is in forced
shutdown, instead of silently succeeding via generic_file_fsync().

Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3/file.c

index 3b22c73756160edc4467e4138bfee1d33004f644..5016bccc2ac5b4988c3e2021b226dbff18731e69 100644 (file)
@@ -1440,6 +1440,18 @@ static ssize_t ntfs_file_splice_write(struct pipe_inode_info *pipe,
        return iter_file_splice_write(pipe, file, ppos, len, flags);
 }
 
+/*
+ * ntfs_file_fsync - file_operations::fsync
+ */
+static int ntfs_file_fsync(struct file *file, loff_t start, loff_t end, int datasync)
+{
+       struct inode *inode = file_inode(file);
+       if (unlikely(ntfs3_forced_shutdown(inode->i_sb)))
+               return -EIO;
+
+       return generic_file_fsync(file, start, end, datasync);
+}
+
 // clang-format off
 const struct inode_operations ntfs_file_inode_operations = {
        .getattr        = ntfs_getattr,
@@ -1462,7 +1474,7 @@ const struct file_operations ntfs_file_operations = {
        .splice_write   = ntfs_file_splice_write,
        .mmap_prepare   = ntfs_file_mmap_prepare,
        .open           = ntfs_file_open,
-       .fsync          = generic_file_fsync,
+       .fsync          = ntfs_file_fsync,
        .fallocate      = ntfs_fallocate,
        .release        = ntfs_file_release,
 };