f2fs: remove clear SB_INLINECRYPT flag in default_options
authorYunlei He <heyunlei@oppo.com>
Tue, 26 Mar 2024 06:10:43 +0000 (14:10 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Fri, 29 Mar 2024 23:54:42 +0000 (23:54 +0000)
In f2fs_remount, SB_INLINECRYPT flag will be clear and re-set.
If create new file or open file during this gap, these files
will not use inlinecrypt. Worse case, it may lead to data
corruption if wrappedkey_v0 is enable.

Thread A:                               Thread B:

-f2fs_remount -f2fs_file_open or f2fs_new_inode
  -default_options
<- clear SB_INLINECRYPT flag

                                          -fscrypt_select_encryption_impl

  -parse_options
<- set SB_INLINECRYPT again

Signed-off-by: Yunlei He <heyunlei@oppo.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/super.c

index 7c45929671ad6c0f0e7680969bdf5e4ff696fbd7..df9765b41dac1dd41edc10569725e13d7e9e8565 100644 (file)
@@ -2132,8 +2132,6 @@ static void default_options(struct f2fs_sb_info *sbi, bool remount)
        F2FS_OPTION(sbi).memory_mode = MEMORY_MODE_NORMAL;
        F2FS_OPTION(sbi).errors = MOUNT_ERRORS_CONTINUE;
 
-       sbi->sb->s_flags &= ~SB_INLINECRYPT;
-
        set_opt(sbi, INLINE_XATTR);
        set_opt(sbi, INLINE_DATA);
        set_opt(sbi, INLINE_DENTRY);