Chao Yu
1640dcf383
f2fs: fix to do sanity check on i_xattr_nid in sanity_check_inode()
...
commit 20faaf30e55522bba2b56d9c46689233205d7717 upstream.
syzbot reports a kernel bug as below:
F2FS-fs (loop0): Mounted with checkpoint version = 48b305e4
==================================================================
BUG: KASAN: slab-out-of-bounds in f2fs_test_bit fs/f2fs/f2fs.h:2933 [inline]
BUG: KASAN: slab-out-of-bounds in current_nat_addr fs/f2fs/node.h:213 [inline]
BUG: KASAN: slab-out-of-bounds in f2fs_get_node_info+0xece/0x1200 fs/f2fs/node.c:600
Read of size 1 at addr ffff88807a58c76c by task syz-executor280/5076
CPU: 1 PID: 5076 Comm: syz-executor280 Not tainted 6.9.0-rc5-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
Call Trace:
<TASK>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114
print_address_description mm/kasan/report.c:377 [inline]
print_report+0x169/0x550 mm/kasan/report.c:488
kasan_report+0x143/0x180 mm/kasan/report.c:601
f2fs_test_bit fs/f2fs/f2fs.h:2933 [inline]
current_nat_addr fs/f2fs/node.h:213 [inline]
f2fs_get_node_info+0xece/0x1200 fs/f2fs/node.c:600
f2fs_xattr_fiemap fs/f2fs/data.c:1848 [inline]
f2fs_fiemap+0x55d/0x1ee0 fs/f2fs/data.c:1925
ioctl_fiemap fs/ioctl.c:220 [inline]
do_vfs_ioctl+0x1c07/0x2e50 fs/ioctl.c:838
__do_sys_ioctl fs/ioctl.c:902 [inline]
__se_sys_ioctl+0x81/0x170 fs/ioctl.c:890
do_syscall_x64 arch/x86/entry/common.c:52 [inline]
do_syscall_64+0xf5/0x240 arch/x86/entry/common.c:83
entry_SYSCALL_64_after_hwframe+0x77/0x7f
The root cause is we missed to do sanity check on i_xattr_nid during
f2fs_iget(), so that in fiemap() path, current_nat_addr() will access
nat_bitmap w/ offset from invalid i_xattr_nid, result in triggering
kasan bug report, fix it.
Reported-and-tested-by: syzbot+3694e283cf5c40df6d14@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/linux-f2fs-devel/00000000000094036c0616e72a1d@google.com
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-06-16 13:39:55 +02:00
..
2024-05-17 11:50:55 +02:00
2023-02-01 08:27:06 +01:00
2024-06-16 13:39:53 +02:00
2023-09-23 11:09:54 +02:00
2024-05-17 11:51:03 +02:00
2024-03-06 14:38:50 +00:00
2024-02-23 08:55:09 +01:00
2024-05-02 16:24:43 +02:00
2023-03-10 09:39:50 +01:00
2022-12-31 13:14:15 +01:00
2022-11-10 18:15:37 +01:00
2024-01-25 14:52:27 -08:00
2022-02-01 17:27:01 +01:00
2023-09-19 12:22:52 +02:00
2024-06-16 13:39:16 +02:00
2024-01-25 14:52:33 -08:00
2024-03-15 10:48:15 -04:00
2024-03-01 13:21:56 +01:00
2024-04-10 16:19:21 +02:00
2023-09-23 11:09:57 +02:00
2024-06-16 13:39:32 +02:00
2024-06-16 13:39:55 +02:00
2024-04-10 16:18:35 +02:00
2021-10-04 22:13:12 +01:00
2024-04-10 16:18:38 +02:00
2024-06-16 13:39:20 +02:00
2023-03-10 09:39:57 +01:00
2023-05-24 17:36:43 +01:00
2024-03-06 14:38:50 +00:00
2023-12-08 08:48:05 +01:00
2024-04-13 13:01:44 +02:00
2024-01-25 14:52:29 -08:00
2024-06-16 13:39:17 +02:00
2024-02-23 08:54:39 +01:00
2024-02-23 08:54:51 +01:00
2024-05-17 11:50:44 +02:00
2024-04-27 17:05:23 +02:00
2022-04-13 20:59:10 +02:00
2021-12-29 12:28:59 +01:00
2024-06-16 13:39:55 +02:00
2021-10-04 22:02:17 +01:00
2024-06-16 13:39:55 +02:00
2024-06-16 13:39:54 +02:00
2023-09-19 12:22:27 +02:00
2024-04-10 16:19:19 +02:00
2022-11-26 09:24:52 +01:00
2024-06-16 13:39:43 +02:00
2023-09-19 12:22:34 +02:00
2024-06-16 13:39:16 +02:00
2022-12-31 13:14:44 +01:00
2023-11-28 16:56:29 +00:00
2024-03-15 10:48:22 -04:00
2024-04-13 13:01:43 +02:00
2021-09-21 08:36:48 -07:00
2024-03-26 18:21:27 -04:00
2023-07-23 13:47:33 +02:00
2023-09-19 12:22:30 +02:00
2021-12-14 10:57:12 +01:00
2023-02-22 12:57:07 +01:00
2024-04-27 17:05:28 +02:00
2024-04-13 13:01:44 +02:00
2023-09-23 11:10:02 +02:00
2024-04-10 16:18:35 +02:00
2023-09-19 12:22:53 +02:00
2024-04-10 16:19:38 +02:00
2023-09-19 12:22:52 +02:00
2024-02-23 08:54:32 +01:00
2024-03-01 13:21:43 +01:00
2024-04-10 16:18:46 +02:00
2023-09-23 11:10:01 +02:00
2023-10-06 13:18:24 +02:00
2022-11-03 23:59:12 +09:00
2022-06-09 10:22:26 +02:00
2022-12-31 13:14:39 +01:00
2022-11-26 09:24:51 +01:00
2022-12-31 13:14:30 +01:00
2022-04-08 14:24:18 +02:00
2022-09-28 11:11:56 +02:00
2024-02-23 08:54:46 +01:00
2023-09-19 12:22:30 +02:00
2024-06-16 13:39:15 +02:00
2024-04-10 16:19:31 +02:00
2024-03-26 18:21:14 -04:00
2022-10-26 12:34:58 +02:00
2023-08-11 15:13:58 +02:00
2023-07-23 13:47:34 +02:00
2023-11-20 11:08:13 +01:00
2023-12-08 08:48:04 +01:00
2023-08-30 16:18:19 +02:00
2024-02-23 08:54:25 +01:00
2024-04-10 16:19:01 +02:00
2021-10-18 20:22:03 -10:00
2022-12-31 13:14:03 +01:00
2024-04-10 16:19:23 +02:00
2022-12-14 11:37:31 +01:00
2023-01-12 11:59:20 +01:00
2024-02-23 08:54:26 +01:00
2024-01-25 14:52:35 -08:00
2024-04-10 16:19:05 +02:00
2024-04-10 16:19:42 +02:00
2023-01-12 11:58:47 +01:00
2022-07-02 16:41:17 +02:00
2022-07-02 16:41:14 +02:00
2022-12-19 12:36:39 +01:00
2022-07-21 21:24:14 +02:00
2024-03-26 18:21:15 -04:00
2022-07-12 16:35:08 +02:00
2021-12-14 10:57:15 +01:00
2022-10-26 12:34:17 +02:00
2022-04-27 14:38:57 +02:00
2023-05-24 17:36:54 +01:00
2023-08-11 15:13:58 +02:00
2022-04-27 14:38:50 +02:00
2022-10-26 12:34:36 +02:00
2022-12-31 13:14:01 +01:00