* [PATCH] f2fs: fix to avoid uninit-value access in f2fs_sanity_check_node_footer
@ 2026-03-09 2:22 Chao Yu
2026-03-24 17:32 ` [f2fs-dev] " patchwork-bot+f2fs
0 siblings, 1 reply; 2+ messages in thread
From: Chao Yu @ 2026-03-09 2:22 UTC (permalink / raw)
To: jaegeuk
Cc: linux-f2fs-devel, linux-kernel, Chao Yu, stable,
syzbot+9aac813cdc456cdd49f8
syzbot reported a f2fs bug as below:
BUG: KMSAN: uninit-value in f2fs_sanity_check_node_footer+0x374/0xa20 fs/f2fs/node.c:1520
f2fs_sanity_check_node_footer+0x374/0xa20 fs/f2fs/node.c:1520
f2fs_finish_read_bio+0xe1e/0x1d60 fs/f2fs/data.c:177
f2fs_read_end_io+0x6ab/0x2220 fs/f2fs/data.c:-1
bio_endio+0x1006/0x1160 block/bio.c:1792
submit_bio_noacct+0x533/0x2960 block/blk-core.c:891
submit_bio+0x57a/0x620 block/blk-core.c:926
blk_crypto_submit_bio include/linux/blk-crypto.h:203 [inline]
f2fs_submit_read_bio+0x12c/0x360 fs/f2fs/data.c:557
f2fs_submit_page_bio+0xee2/0x1450 fs/f2fs/data.c:775
read_node_folio+0x384/0x4b0 fs/f2fs/node.c:1481
__get_node_folio+0x5db/0x15d0 fs/f2fs/node.c:1576
f2fs_get_inode_folio+0x40/0x50 fs/f2fs/node.c:1623
do_read_inode fs/f2fs/inode.c:425 [inline]
f2fs_iget+0x1209/0x9380 fs/f2fs/inode.c:596
f2fs_fill_super+0x8f5a/0xb2e0 fs/f2fs/super.c:5184
get_tree_bdev_flags+0x6e6/0x920 fs/super.c:1694
get_tree_bdev+0x38/0x50 fs/super.c:1717
f2fs_get_tree+0x35/0x40 fs/f2fs/super.c:5436
vfs_get_tree+0xb3/0x5d0 fs/super.c:1754
fc_mount fs/namespace.c:1193 [inline]
do_new_mount_fc fs/namespace.c:3763 [inline]
do_new_mount+0x885/0x1dd0 fs/namespace.c:3839
path_mount+0x7a2/0x20b0 fs/namespace.c:4159
do_mount fs/namespace.c:4172 [inline]
__do_sys_mount fs/namespace.c:4361 [inline]
__se_sys_mount+0x704/0x7f0 fs/namespace.c:4338
__x64_sys_mount+0xe4/0x150 fs/namespace.c:4338
x64_sys_call+0x39f0/0x3ea0 arch/x86/include/generated/asm/syscalls_64.h:166
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0x134/0xf80 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
The root cause is: in f2fs_finish_read_bio(), we may access uninit data
in folio if we failed to read the data from device into folio, let's add
a check condition to avoid such issue.
Cc: stable@kernel.org
Fixes: 50ac3ecd8e05 ("f2fs: fix to do sanity check on node footer in {read,write}_end_io")
Reported-by: syzbot+9aac813cdc456cdd49f8@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/linux-f2fs-devel/69a9ca26.a70a0220.305d9a.0000.GAE@google.com
Signed-off-by: Chao Yu <chao@kernel.org>
---
fs/f2fs/data.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 400f0400e13d..cb2332faf5f0 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -173,7 +173,8 @@ static void f2fs_finish_read_bio(struct bio *bio, bool in_task)
while (nr_pages--)
dec_page_count(F2FS_F_SB(folio), __read_io_type(folio));
- if (F2FS_F_SB(folio)->node_inode && is_node_folio(folio) &&
+ if (bio->bi_status == BLK_STS_OK &&
+ F2FS_F_SB(folio)->node_inode && is_node_folio(folio) &&
f2fs_sanity_check_node_footer(F2FS_F_SB(folio),
folio, folio->index, NODE_TYPE_REGULAR, true))
bio->bi_status = BLK_STS_IOERR;
--
2.49.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [f2fs-dev] [PATCH] f2fs: fix to avoid uninit-value access in f2fs_sanity_check_node_footer
2026-03-09 2:22 [PATCH] f2fs: fix to avoid uninit-value access in f2fs_sanity_check_node_footer Chao Yu
@ 2026-03-24 17:32 ` patchwork-bot+f2fs
0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+f2fs @ 2026-03-24 17:32 UTC (permalink / raw)
To: Chao Yu
Cc: jaegeuk, syzbot+9aac813cdc456cdd49f8, stable, linux-kernel,
linux-f2fs-devel
Hello:
This patch was applied to jaegeuk/f2fs.git (dev)
by Jaegeuk Kim <jaegeuk@kernel.org>:
On Mon, 9 Mar 2026 02:22:37 +0000 you wrote:
> syzbot reported a f2fs bug as below:
>
> BUG: KMSAN: uninit-value in f2fs_sanity_check_node_footer+0x374/0xa20 fs/f2fs/node.c:1520
> f2fs_sanity_check_node_footer+0x374/0xa20 fs/f2fs/node.c:1520
> f2fs_finish_read_bio+0xe1e/0x1d60 fs/f2fs/data.c:177
> f2fs_read_end_io+0x6ab/0x2220 fs/f2fs/data.c:-1
> bio_endio+0x1006/0x1160 block/bio.c:1792
> submit_bio_noacct+0x533/0x2960 block/blk-core.c:891
> submit_bio+0x57a/0x620 block/blk-core.c:926
> blk_crypto_submit_bio include/linux/blk-crypto.h:203 [inline]
> f2fs_submit_read_bio+0x12c/0x360 fs/f2fs/data.c:557
> f2fs_submit_page_bio+0xee2/0x1450 fs/f2fs/data.c:775
> read_node_folio+0x384/0x4b0 fs/f2fs/node.c:1481
> __get_node_folio+0x5db/0x15d0 fs/f2fs/node.c:1576
> f2fs_get_inode_folio+0x40/0x50 fs/f2fs/node.c:1623
> do_read_inode fs/f2fs/inode.c:425 [inline]
> f2fs_iget+0x1209/0x9380 fs/f2fs/inode.c:596
> f2fs_fill_super+0x8f5a/0xb2e0 fs/f2fs/super.c:5184
> get_tree_bdev_flags+0x6e6/0x920 fs/super.c:1694
> get_tree_bdev+0x38/0x50 fs/super.c:1717
> f2fs_get_tree+0x35/0x40 fs/f2fs/super.c:5436
> vfs_get_tree+0xb3/0x5d0 fs/super.c:1754
> fc_mount fs/namespace.c:1193 [inline]
> do_new_mount_fc fs/namespace.c:3763 [inline]
> do_new_mount+0x885/0x1dd0 fs/namespace.c:3839
> path_mount+0x7a2/0x20b0 fs/namespace.c:4159
> do_mount fs/namespace.c:4172 [inline]
> __do_sys_mount fs/namespace.c:4361 [inline]
> __se_sys_mount+0x704/0x7f0 fs/namespace.c:4338
> __x64_sys_mount+0xe4/0x150 fs/namespace.c:4338
> x64_sys_call+0x39f0/0x3ea0 arch/x86/include/generated/asm/syscalls_64.h:166
> do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
> do_syscall_64+0x134/0xf80 arch/x86/entry/syscall_64.c:94
> entry_SYSCALL_64_after_hwframe+0x77/0x7f
>
> [...]
Here is the summary with links:
- [f2fs-dev] f2fs: fix to avoid uninit-value access in f2fs_sanity_check_node_footer
https://git.kernel.org/jaegeuk/f2fs/c/7e00e868a0db
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:[~2026-03-24 17:32 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-09 2:22 [PATCH] f2fs: fix to avoid uninit-value access in f2fs_sanity_check_node_footer Chao Yu
2026-03-24 17:32 ` [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