]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
f2fs: compress: fix to disallow enabling compress on non-empty file
authorChao Yu <yuchao0@huawei.com>
Fri, 18 Sep 2020 03:03:49 +0000 (11:03 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Nov 2020 10:51:14 +0000 (11:51 +0100)
[ Upstream commit 519a5a2f37b850f4eb86674a10d143088670a390 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/f2fs/file.c

index 8a422400e824d71ac3a47e473ab38b83fc002e05..4ec10256dc67f0b1c480bbc6ab1cef6b7d136561 100644 (file)
@@ -1836,6 +1836,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);
                }