summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChao Yu <yuchao0@huawei.com>2020-09-18 05:03:49 +0200
committerJaegeuk Kim <jaegeuk@kernel.org>2020-09-29 18:16:36 +0200
commit519a5a2f37b850f4eb86674a10d143088670a390 (patch)
tree6cf36ecfcb02727e0f57a66b822c41e3f3ec2967
parentf2fs: compress: introduce cic/dic slab cache (diff)
downloadlinux-519a5a2f37b850f4eb86674a10d143088670a390.tar.xz
linux-519a5a2f37b850f4eb86674a10d143088670a390.zip
f2fs: compress: fix to disallow enabling compress on non-empty file
Compressed inode and normal inode has different layout, so we should disallow enabling compress on non-empty file to avoid race condition during inode .i_addr array parsing and updating. Signed-off-by: Chao Yu <yuchao0@huawei.com> [Jaegeuk Kim: Fix missing condition] Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--fs/f2fs/file.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 58e464cc15f0..62efbf1b2b62 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -1821,6 +1821,8 @@ static int f2fs_setflags_common(struct inode *inode, u32 iflags, u32 mask)
if (iflags & F2FS_COMPR_FL) {
if (!f2fs_may_compress(inode))
return -EINVAL;
+ if (S_ISREG(inode->i_mode) && inode->i_size)
+ return -EINVAL;
set_compress_context(inode);
}