From: Chao Yu Date: Wed, 5 Apr 2023 14:44:53 +0000 (+0800) Subject: f2fs: fix to check return value of f2fs_do_truncate_blocks() X-Git-Tag: v6.1.63~5849 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2eb5d0165b3691702ede7baaff2c21cfc7bb01f9;p=sdk%2Femulator%2Femulator-kernel.git f2fs: fix to check return value of f2fs_do_truncate_blocks() [ Upstream commit b851ee6ba3cc212641e622ebcf92b950c7bafa07 ] Otherwise, if truncation on cow_inode failed, remained data may pollute current transaction of atomic write. Cc: Daeho Jeong Fixes: a46bebd502fe ("f2fs: synchronize atomic write aborts") Signed-off-by: Chao Yu Signed-off-by: Jaegeuk Kim Signed-off-by: Sasha Levin --- diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index c1e24da4dfec..bf37983304a3 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -2115,7 +2115,11 @@ static int f2fs_ioc_start_atomic_write(struct file *filp) clear_inode_flag(fi->cow_inode, FI_INLINE_DATA); } else { /* Reuse the already created COW inode */ - f2fs_do_truncate_blocks(fi->cow_inode, 0, true); + ret = f2fs_do_truncate_blocks(fi->cow_inode, 0, true); + if (ret) { + f2fs_up_write(&fi->i_gc_rwsem[WRITE]); + goto out; + } } f2fs_write_inode(inode, NULL);