Merge branch 'for-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
[firefly-linux-kernel-4.4.55.git] / fs / ext4 / fsync.c
index fc938ebbddec95382daba3b947e7b0c672a4c1e6..a8bc47f75fa0946582ce5562ebdea334cead1ac6 100644 (file)
@@ -98,8 +98,13 @@ int ext4_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
 
        trace_ext4_sync_file_enter(file, datasync);
 
-       if (inode->i_sb->s_flags & MS_RDONLY)
+       if (inode->i_sb->s_flags & MS_RDONLY) {
+               /* Make sure that we read updated s_mount_flags value */
+               smp_rmb();
+               if (EXT4_SB(inode->i_sb)->s_mount_flags & EXT4_MF_FS_ABORTED)
+                       ret = -EROFS;
                goto out;
+       }
 
        if (!journal) {
                ret = generic_file_fsync(file, start, end, datasync);