* [PATCH] f2fs: fix to do sanity check on sbi->total_valid_block_count
@ 2025-04-08 12:22 Chao Yu
2025-04-12 17:11 ` [f2fs-dev] " patchwork-bot+f2fs
0 siblings, 1 reply; 2+ messages in thread
From: Chao Yu @ 2025-04-08 12:22 UTC (permalink / raw)
To: jaegeuk
Cc: linux-f2fs-devel, linux-kernel, Chao Yu, syzbot+8b376a77b2f364097fbe
syzbot reported a f2fs bug as below:
------------[ cut here ]------------
kernel BUG at fs/f2fs/f2fs.h:2521!
RIP: 0010:dec_valid_block_count+0x3b2/0x3c0 fs/f2fs/f2fs.h:2521
Call Trace:
f2fs_truncate_data_blocks_range+0xc8c/0x11a0 fs/f2fs/file.c:695
truncate_dnode+0x417/0x740 fs/f2fs/node.c:973
truncate_nodes+0x3ec/0xf50 fs/f2fs/node.c:1014
f2fs_truncate_inode_blocks+0x8e3/0x1370 fs/f2fs/node.c:1197
f2fs_do_truncate_blocks+0x840/0x12b0 fs/f2fs/file.c:810
f2fs_truncate_blocks+0x10d/0x300 fs/f2fs/file.c:838
f2fs_truncate+0x417/0x720 fs/f2fs/file.c:888
f2fs_setattr+0xc4f/0x12f0 fs/f2fs/file.c:1112
notify_change+0xbca/0xe90 fs/attr.c:552
do_truncate+0x222/0x310 fs/open.c:65
handle_truncate fs/namei.c:3466 [inline]
do_open fs/namei.c:3849 [inline]
path_openat+0x2e4f/0x35d0 fs/namei.c:4004
do_filp_open+0x284/0x4e0 fs/namei.c:4031
do_sys_openat2+0x12b/0x1d0 fs/open.c:1429
do_sys_open fs/open.c:1444 [inline]
__do_sys_creat fs/open.c:1522 [inline]
__se_sys_creat fs/open.c:1516 [inline]
__x64_sys_creat+0x124/0x170 fs/open.c:1516
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xf3/0x230 arch/x86/entry/syscall_64.c:94
The reason is: in fuzzed image, sbi->total_valid_block_count is
inconsistent w/ mapped blocks indexed by inode, so, we should
not trigger panic for such case, instead, let's print log and
set fsck flag.
Fixes: 39a53e0ce0df ("f2fs: add superblock and major in-memory structure")
Reported-by: syzbot+8b376a77b2f364097fbe@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/linux-f2fs-devel/67f3c0b2.050a0220.396535.0547.GAE@google.com
Signed-off-by: Chao Yu <chao@kernel.org>
---
fs/f2fs/f2fs.h | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index f8f7ec4c644c..9915f31ee2d1 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -2526,8 +2526,14 @@ static inline void dec_valid_block_count(struct f2fs_sb_info *sbi,
blkcnt_t sectors = count << F2FS_LOG_SECTORS_PER_BLOCK;
spin_lock(&sbi->stat_lock);
- f2fs_bug_on(sbi, sbi->total_valid_block_count < (block_t) count);
- sbi->total_valid_block_count -= (block_t)count;
+ if (unlikely(sbi->total_valid_block_count < count)) {
+ f2fs_warn(sbi, "Inconsistent total_valid_block_count:%u, ino:%lu, count:%u",
+ sbi->total_valid_block_count, inode->i_ino, count);
+ sbi->total_valid_block_count = 0;
+ set_sbi_flag(sbi, SBI_NEED_FSCK);
+ } else {
+ sbi->total_valid_block_count -= count;
+ }
if (sbi->reserved_blocks &&
sbi->current_reserved_blocks < sbi->reserved_blocks)
sbi->current_reserved_blocks = min(sbi->reserved_blocks,
--
2.49.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [f2fs-dev] [PATCH] f2fs: fix to do sanity check on sbi->total_valid_block_count
2025-04-08 12:22 [PATCH] f2fs: fix to do sanity check on sbi->total_valid_block_count Chao Yu
@ 2025-04-12 17:11 ` patchwork-bot+f2fs
0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+f2fs @ 2025-04-12 17:11 UTC (permalink / raw)
To: Chao Yu
Cc: jaegeuk, syzbot+8b376a77b2f364097fbe, linux-kernel, linux-f2fs-devel
Hello:
This patch was applied to jaegeuk/f2fs.git (dev)
by Jaegeuk Kim <jaegeuk@kernel.org>:
On Tue, 8 Apr 2025 20:22:08 +0800 you wrote:
> syzbot reported a f2fs bug as below:
>
> ------------[ cut here ]------------
> kernel BUG at fs/f2fs/f2fs.h:2521!
> RIP: 0010:dec_valid_block_count+0x3b2/0x3c0 fs/f2fs/f2fs.h:2521
> Call Trace:
> f2fs_truncate_data_blocks_range+0xc8c/0x11a0 fs/f2fs/file.c:695
> truncate_dnode+0x417/0x740 fs/f2fs/node.c:973
> truncate_nodes+0x3ec/0xf50 fs/f2fs/node.c:1014
> f2fs_truncate_inode_blocks+0x8e3/0x1370 fs/f2fs/node.c:1197
> f2fs_do_truncate_blocks+0x840/0x12b0 fs/f2fs/file.c:810
> f2fs_truncate_blocks+0x10d/0x300 fs/f2fs/file.c:838
> f2fs_truncate+0x417/0x720 fs/f2fs/file.c:888
> f2fs_setattr+0xc4f/0x12f0 fs/f2fs/file.c:1112
> notify_change+0xbca/0xe90 fs/attr.c:552
> do_truncate+0x222/0x310 fs/open.c:65
> handle_truncate fs/namei.c:3466 [inline]
> do_open fs/namei.c:3849 [inline]
> path_openat+0x2e4f/0x35d0 fs/namei.c:4004
> do_filp_open+0x284/0x4e0 fs/namei.c:4031
> do_sys_openat2+0x12b/0x1d0 fs/open.c:1429
> do_sys_open fs/open.c:1444 [inline]
> __do_sys_creat fs/open.c:1522 [inline]
> __se_sys_creat fs/open.c:1516 [inline]
> __x64_sys_creat+0x124/0x170 fs/open.c:1516
> do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
> do_syscall_64+0xf3/0x230 arch/x86/entry/syscall_64.c:94
>
> [...]
Here is the summary with links:
- [f2fs-dev] f2fs: fix to do sanity check on sbi->total_valid_block_count
https://git.kernel.org/jaegeuk/f2fs/c/05872a167c2c
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-04-12 17:10 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-04-08 12:22 [PATCH] f2fs: fix to do sanity check on sbi->total_valid_block_count Chao Yu
2025-04-12 17:11 ` [f2fs-dev] " patchwork-bot+f2fs
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome