From: Daeho Jeong Date: Thu, 30 Jul 2020 05:09:28 +0000 (+0900) Subject: f2fs: make file immutable even if releasing zero compression block X-Git-Tag: v5.9-rc1~69^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=567c4bf54a85a14af4ca9be19d7dc327e56a15f9;p=thirdparty%2Fkernel%2Flinux.git f2fs: make file immutable even if releasing zero compression block When we use F2FS_IOC_RELEASE_COMPRESS_BLOCKS ioctl, if we can't find any compressed blocks in the file even with large file size, the ioctl just ends up without changing the file's status as immutable. It makes the user, who expects that the file is immutable when it returns successfully, confused. Signed-off-by: Daeho Jeong Reviewed-by: Chao Yu Signed-off-by: Jaegeuk Kim --- diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index cc7f5670390fd..8a422400e824d 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -3535,14 +3535,14 @@ static int f2fs_release_compress_blocks(struct file *filp, unsigned long arg) if (ret) goto out; - if (!F2FS_I(inode)->i_compr_blocks) - goto out; - F2FS_I(inode)->i_flags |= F2FS_IMMUTABLE_FL; f2fs_set_inode_flags(inode); inode->i_ctime = current_time(inode); f2fs_mark_inode_dirty_sync(inode, true); + if (!F2FS_I(inode)->i_compr_blocks) + goto out; + down_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]); down_write(&F2FS_I(inode)->i_mmap_sem);