syzbot


KASAN: use-after-free Read in __ocfs2_find_path

Status: fixed on 2025/05/05 12:25
Bug presence: origin:upstream
[Documentation on labels]
Reported-by: syzbot+e41668d5154370928317@syzkaller.appspotmail.com
Fix commit: 17c99ab3db2b ocfs2: validate l_tree_depth to avoid out-of-bounds access
First crash: 230d, last: 53d
Fix bisection: fixed by (bisect log) :
commit 17c99ab3db2ba74096d36c69daa6e784e98fc0b8
Author: Vasiliy Kovalev <kovalev@altlinux.org>
Date: Fri Feb 14 08:49:08 2025 +0000

  ocfs2: validate l_tree_depth to avoid out-of-bounds access

  
Bug presence (1)
Date Name Commit Repro Result
2024/11/02 upstream (ToT) 11066801dd4b C [report] KASAN: use-after-free Read in __ocfs2_find_path
Similar bugs (2)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream KASAN: use-after-free Read in __ocfs2_find_path ocfs2 C inconclusive 65 67d 226d 27/28 upstream: reported C repro on 2024/10/09 20:34
linux-6.1 KASAN: use-after-free Read in __ocfs2_find_path C done 5 44d 228d 3/3 fixed on 2025/05/13 14:21
Last patch testing requests (4)
Created Duration User Patch Repo Result
2025/03/31 07:12 14m retest repro linux-5.15.y report log
2025/03/31 07:12 13m retest repro linux-5.15.y report log
2025/01/12 18:33 16m retest repro linux-5.15.y report log
2025/01/12 18:33 12m retest repro linux-5.15.y report log
Fix bisection attempts (4)
Created Duration User Patch Repo Result
2025/05/02 17:36 5h33m bisect fix linux-5.15.y OK (1) job log
2025/03/17 03:46 2h01m bisect fix linux-5.15.y OK (0) job log log
2025/02/14 09:11 1h30m bisect fix linux-5.15.y OK (0) job log log
2024/12/29 16:50 1h27m bisect fix linux-5.15.y OK (0) job log log

Sample crash report:
netdevsim netdevsim0 netdevsim3: set [1, 0] type 2 family 0 port 6081 - 0
loop0: detected capacity change from 0 to 32768
==================================================================
BUG: KASAN: use-after-free in __ocfs2_find_path+0x1dc/0x6a8 fs/ocfs2/alloc.c:1817
Read of size 4 at addr ffff0000e31e2000 by task syz-executor172/4021

CPU: 0 PID: 4021 Comm: syz-executor172 Not tainted 5.15.167-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/06/2024
Call trace:
 dump_backtrace+0x0/0x530 arch/arm64/kernel/stacktrace.c:152
 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:216
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x108/0x170 lib/dump_stack.c:106
 print_address_description+0x7c/0x3f0 mm/kasan/report.c:248
 __kasan_report mm/kasan/report.c:434 [inline]
 kasan_report+0x174/0x1e4 mm/kasan/report.c:451
 __asan_report_load4_noabort+0x44/0x50 mm/kasan/report_generic.c:308
 __ocfs2_find_path+0x1dc/0x6a8 fs/ocfs2/alloc.c:1817
 ocfs2_find_leaf+0xd0/0x218 fs/ocfs2/alloc.c:1931
 ocfs2_get_clusters_nocache+0x16c/0xa38 fs/ocfs2/extent_map.c:418
 ocfs2_get_clusters+0x448/0x964 fs/ocfs2/extent_map.c:621
 ocfs2_extent_map_get_blocks+0x1d8/0x650 fs/ocfs2/extent_map.c:668
 ocfs2_read_virt_blocks+0x2bc/0x960 fs/ocfs2/extent_map.c:977
 ocfs2_read_dir_block fs/ocfs2/dir.c:508 [inline]
 ocfs2_find_entry_el fs/ocfs2/dir.c:715 [inline]
 ocfs2_find_entry+0x3ac/0x2450 fs/ocfs2/dir.c:1080
 ocfs2_find_files_on_disk+0x10c/0x3d0 fs/ocfs2/dir.c:1982
 ocfs2_lookup_ino_from_name+0xb8/0x1d4 fs/ocfs2/dir.c:2004
 _ocfs2_get_system_file_inode fs/ocfs2/sysfile.c:136 [inline]
 ocfs2_get_system_file_inode+0x2c8/0x6b8 fs/ocfs2/sysfile.c:112
 ocfs2_init_global_system_inodes+0x2bc/0x618 fs/ocfs2/super.c:458
 ocfs2_initialize_super fs/ocfs2/super.c:2276 [inline]
 ocfs2_fill_super+0x394c/0x498c fs/ocfs2/super.c:995
 mount_bdev+0x274/0x370 fs/super.c:1398
 ocfs2_mount+0x44/0x58 fs/ocfs2/super.c:1187
 legacy_get_tree+0xd4/0x16c fs/fs_context.c:611
 vfs_get_tree+0x90/0x274 fs/super.c:1528
 do_new_mount+0x278/0x8fc fs/namespace.c:3005
 path_mount+0x594/0x101c fs/namespace.c:3335
 do_mount fs/namespace.c:3348 [inline]
 __do_sys_mount fs/namespace.c:3556 [inline]
 __se_sys_mount fs/namespace.c:3533 [inline]
 __arm64_sys_mount+0x510/0x5e0 fs/namespace.c:3533
 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline]
 invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:52
 el0_svc_common+0x138/0x258 arch/arm64/kernel/syscall.c:142
 do_el0_svc+0x58/0x14c arch/arm64/kernel/syscall.c:181
 el0_svc+0x7c/0x1f0 arch/arm64/kernel/entry-common.c:608
 el0t_64_sync_handler+0x84/0xe4 arch/arm64/kernel/entry-common.c:626
 el0t_64_sync+0x1a0/0x1a4 arch/arm64/kernel/entry.S:584

The buggy address belongs to the page:
page:0000000004f9000d refcount:0 mapcount:0 mapping:0000000000000000 index:0x1 pfn:0x1231e2
flags: 0x5ffc00000000000(node=0|zone=2|lastcpupid=0x7ff)
raw: 05ffc00000000000 fffffc00038c78c8 ffff0001b41a6520 0000000000000000
raw: 0000000000000001 0000000000000000 00000000ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff0000e31e1f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 ffff0000e31e1f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>ffff0000e31e2000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
                   ^
 ffff0000e31e2080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 ffff0000e31e2100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
==================================================================
OCFS2: ERROR (device loop0): int __ocfs2_find_path(struct ocfs2_caching_info *, struct ocfs2_extent_list *, u32, path_insert_t *, void *): Owner 66 has bad blkno in extent list at depth 65533 (index 65534)
On-disk corruption discovered. Please run fsck.ocfs2 once the filesystem is unmounted.
OCFS2: File system is now read-only.
(syz-executor172,4021,0):ocfs2_find_leaf:1933 ERROR: status = -30
(syz-executor172,4021,0):ocfs2_get_clusters_nocache:421 ERROR: status = -30
(syz-executor172,4021,0):ocfs2_get_clusters:624 ERROR: status = -30
(syz-executor172,4021,0):ocfs2_extent_map_get_blocks:671 ERROR: status = -30
(syz-executor172,4021,0):ocfs2_read_virt_blocks:981 ERROR: status = -30
(syz-executor172,4021,0):ocfs2_read_dir_block:511 ERROR: status = -30
(syz-executor172,4021,0):ocfs2_init_global_system_inodes:462 ERROR: status = -30
(syz-executor172,4021,0):ocfs2_init_global_system_inodes:464 ERROR: Unable to load system inode 1, possibly corrupt fs?
(syz-executor172,4021,0):ocfs2_init_global_system_inodes:473 ERROR: status = -30
(syz-executor172,4021,0):ocfs2_initialize_super:2278 ERROR: status = -30
(syz-executor172,4021,0):ocfs2_fill_super:1177 ERROR: status = -30

Crashes (11):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/10/05 21:23 linux-5.15.y 3a5928702e71 d7906eff .config console log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-linux-5-15-kasan-arm64 KASAN: use-after-free Read in __ocfs2_find_path
2024/10/05 21:05 linux-5.15.y 3a5928702e71 d7906eff .config console log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-linux-5-15-kasan-arm64 KASAN: use-after-free Read in __ocfs2_find_path
2024/11/13 04:56 linux-5.15.y 3c17fc483905 62026c85 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-5-15-kasan KASAN: use-after-free Read in __ocfs2_find_path
2024/11/13 04:55 linux-5.15.y 3c17fc483905 62026c85 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-5-15-kasan KASAN: use-after-free Read in __ocfs2_find_path
2024/10/05 21:04 linux-5.15.y 3a5928702e71 d7906eff .config console log report syz / log C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-linux-5-15-kasan KASAN: use-after-free Read in __ocfs2_find_path
2024/10/05 20:50 linux-5.15.y 3a5928702e71 d7906eff .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-5-15-kasan KASAN: use-after-free Read in __ocfs2_find_path
2024/10/05 20:48 linux-5.15.y 3a5928702e71 d7906eff .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-5-15-kasan KASAN: use-after-free Read in __ocfs2_find_path
2024/11/12 18:00 linux-5.15.y 3c17fc483905 75bb1b32 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-5-15-kasan-arm64 KASAN: use-after-free Read in __ocfs2_find_path
2024/11/12 17:58 linux-5.15.y 3c17fc483905 75bb1b32 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-5-15-kasan-arm64 KASAN: use-after-free Read in __ocfs2_find_path
2024/10/05 20:48 linux-5.15.y 3a5928702e71 d7906eff .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-5-15-kasan-arm64 KASAN: use-after-free Read in __ocfs2_find_path
2024/10/05 20:45 linux-5.15.y 3a5928702e71 d7906eff .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-5-15-kasan-arm64 KASAN: use-after-free Read in __ocfs2_find_path
* Struck through repros no longer work on HEAD.