Unverified Commit 1b2ae190 authored by Konstantin Komarov's avatar Konstantin Komarov
Browse files

fs/ntfs3: check for shutdown in fsync



Ensure fsync() returns -EIO when the ntfs3 filesystem is in forced
shutdown, instead of silently succeeding via generic_file_fsync().

Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
parent bcbb8d0a
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -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,
};