Re: On https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=775c17386a6fd
Dmitry Antipov <[email protected]> Tue, 26 May 2026 16:59:22 +0300
| Newsgroups | dev.linux.lists.ocfs2-devel |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 2026-05-26 at 21:18 +0800, Joseph Qi wrote: > Don't understand in which case we will see a corrupted dr_list in > ocfs2_dx_dir_lookup_rec(). > > When ocfs2_validate_dx_root() fails, it will jump to read_failure logic > and buffer is not set to uptodate. > > Could you please list a detail flow for it? Good question. At least C reproducer from https://syzkaller.appspot.com/bug?extid=30b53487d00b4f7f0922 works for me again, and the backtrace (reported with KASAN) is very similar to one reported with UBSAN at https://syzkaller.appspot.com/bug?extid=caacd220635a9cc3bac9 (see console log from there): [ 42.097756][ T5684] loop0: detected capacity change from 0 to 32768 [ 42.104863][ T5684] JBD2: Ignoring recovery information on journal [ 42.113619][ T5684] ocfs2: Mounting device (7,0) on (node local, slot 0) with ordered data mode. [ 42.135689][ T5684] (repro-30b53487d,5684,2):ocfs2_check_set_options:1244 ERROR: Invalid heartbeat mount options [ 42.208624][ T5684] loop0: detected capacity change from 32768 to 32767 [ 42.214609][ T5684] OCFS2: ERROR (device loop0): int ocfs2_validate_dx_root(struct super_block *, struct buffer_head *): Dir Index Root # 74 has bad signature XDIR01 [ 42.215237][ T5684] On-disk corruption discovered. Please run fsck.ocfs2 once the filesystem is unmounted. [ 42.215663][ T5684] OCFS2: File system is now read-only. [ 42.215891][ T5684] (repro-30b53487d,5684,0):ocfs2_find_entry_dx:1065 ERROR: status = -30 [ 42.216256][ T5684] ================================================================== [ 42.216601][ T5684] BUG: KASAN: use-after-free in ocfs2_dx_dir_lookup_rec+0x23c/0x6f0 [ 42.216971][ T5684] Read of size 4 at addr ffff88802fdfd2c0 by task repro-30b53487d/5684 [ 42.217341][ T5684] [ 42.217452][ T5684] CPU: 0 UID: 0 PID: 5684 Comm: repro-30b53487d Tainted: G W 7.1.0-rc5-00006-ge8c2f9fdadee #7 PREEMPT(full) [ 42.217459][ T5684] Tainted: [W]=WARN [ 42.217460][ T5684] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-10.fc44 06/10/2025 [ 42.217462][ T5684] Call Trace: [ 42.217465][ T5684] <TASK> [ 42.217467][ T5684] dump_stack_lvl+0xe8/0x150 [ 42.217473][ T5684] print_address_description+0x55/0x1e0 [ 42.217479][ T5684] ? ocfs2_dx_dir_lookup_rec+0x23c/0x6f0 [ 42.217484][ T5684] print_report+0x58/0x70 [ 42.217490][ T5684] kasan_report+0x117/0x150 [ 42.217496][ T5684] ? ocfs2_dx_dir_lookup_rec+0x23c/0x6f0 [ 42.217502][ T5684] ocfs2_dx_dir_lookup_rec+0x23c/0x6f0 [ 42.217508][ T5684] ? __pfx_ocfs2_dx_dir_lookup_rec+0x10/0x10 [ 42.217513][ T5684] ? ocfs2_dx_dir_name_hash+0x252/0xb50 [ 42.217518][ T5684] ? __asan_memcpy+0x40/0x70 [ 42.217522][ T5684] ? ocfs2_dx_dir_name_hash+0x9fb/0xb50 [ 42.217527][ T5684] ocfs2_dx_dir_lookup+0xd3/0x530 [ 42.217532][ T5684] ? __pfx_ocfs2_dx_dir_name_hash+0x10/0x10 [ 42.217537][ T5684] ? __pfx_ocfs2_dx_dir_lookup+0x10/0x10 [ 42.217543][ T5684] ocfs2_find_entry+0xefe/0x2050 [ 42.217549][ T5684] ? __pfx_ocfs2_find_entry+0x10/0x10 [ 42.217554][ T5684] ? console_unlock+0x150/0x1c0 [ 42.217560][ T5684] ? __pfx_console_unlock+0x10/0x10 [ 42.217566][ T5684] ? irq_work_queue+0xc3/0x140 [ 42.217571][ T5684] ? ocfs2_read_inode_block+0x152/0x1c0 [ 42.217576][ T5684] ? __pfx_ocfs2_read_inode_block+0x10/0x10 [ 42.217580][ T5684] ? do_raw_spin_unlock+0xf5/0x210 [ 42.217584][ T5684] ? ocfs2_inode_lock_full_nested+0xaad/0x1b30 [ 42.217589][ T5684] ? ocfs2_read_blocks+0x119f/0x1510 [ 42.217594][ T5684] ? __pfx_ocfs2_inode_lock_full_nested+0x10/0x10 [ 42.217599][ T5684] ocfs2_check_dir_for_entry+0x13c/0x410 [ 42.217605][ T5684] ? __pfx_ocfs2_check_dir_for_entry+0x10/0x10 [ 42.217609][ T5684] ? do_file_open+0x23e/0x4a0 [ 42.217613][ T5684] ? entry_SYSCALL_64_after_hwframe+0x77/0x7f [ 42.217618][ T5684] ocfs2_mknod+0x6bc/0x2240 [ 42.217623][ T5684] ? __pfx_ocfs2_mknod+0x10/0x10 [ 42.217626][ T5684] ? __pfx_ocfs2_find_entry+0x10/0x10 [ 42.217631][ T5684] ? ocfs2_inode_lock_full_nested+0xaad/0x1b30 [ 42.217636][ T5684] ? register_lock_class+0x31/0x2e0 [ 42.217642][ T5684] ? __lock_acquire+0x683/0x2cd0 [ 42.217649][ T5684] ? start_dir_add+0x19c/0x270 [ 42.217654][ T5684] ? do_raw_spin_lock+0x12b/0x2f0 [ 42.217658][ T5684] ? do_raw_spin_unlock+0xf5/0x210 [ 42.217662][ T5684] ? _raw_spin_unlock+0x28/0x50 [ 42.217670][ T5684] ? rcu_is_watching+0x15/0xb0 [ 42.217675][ T5684] ? ocfs2_lookup+0x5f4/0xa00 [ 42.217681][ T5684] ? __pfx_apparmor_path_mknod+0x10/0x10 [ 42.217686][ T5684] ocfs2_create+0x195/0x460 [ 42.217691][ T5684] ? __pfx_ocfs2_lookup+0x10/0x10 [ 42.217697][ T5684] ? __pfx_ocfs2_create+0x10/0x10 [ 42.217703][ T5684] ? bpf_lsm_inode_permission+0x9/0x20 [ 42.217707][ T5684] ? security_inode_permission+0xb7/0x2e0 [ 42.217713][ T5684] ? may_o_create+0x2d2/0x370 [ 42.217717][ T5684] ? bpf_lsm_inode_create+0x9/0x20 [ 42.217720][ T5684] ? __pfx_ocfs2_create+0x10/0x10 [ 42.217726][ T5684] path_openat+0x17ba/0x3890 [ 42.217733][ T5684] ? __pfx_path_openat+0x10/0x10 [ 42.217737][ T5684] ? stack_trace_save+0xa9/0x100 [ 42.217742][ T5684] do_file_open+0x23e/0x4a0 [ 42.217746][ T5684] ? __pfx_do_file_open+0x10/0x10 [ 42.217753][ T5684] ? alloc_fd+0x5f8/0x660 [ 42.217759][ T5684] do_sys_openat2+0x113/0x200 [ 42.217764][ T5684] ? __pfx_lo_ioctl+0x10/0x10 [ 42.217772][ T5684] ? __pfx_do_sys_openat2+0x10/0x10 [ 42.217777][ T5684] ? blkdev_ioctl+0x5e3/0x740 [ 42.217782][ T5684] ? rcu_is_watching+0x15/0xb0 [ 42.217788][ T5684] __x64_sys_openat+0x138/0x170 [ 42.217793][ T5684] ? entry_SYSCALL_64_after_hwframe+0x77/0x7f [ 42.217797][ T5684] do_syscall_64+0x15f/0x560 [ 42.217808][ T5684] ? trace_irq_disable+0x3b/0x140 [ 42.217813][ T5684] entry_SYSCALL_64_after_hwframe+0x77/0x7f [ 42.217817][ T5684] RIP: 0033:0x42025d [ 42.217821][ T5684] Code: d5 48 8d 3c 0a eb 91 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 f0 ff ff ff f7 d8 64 89 01 48 [ 42.217825][ T5684] RSP: 002b:00007fff7b8ee288 EFLAGS: 00000246 ORIG_RAX: 0000000000000101 [ 42.217830][ T5684] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 000000000042025d [ 42.217833][ T5684] RDX: 0000000000105042 RSI: 0000200000000080 RDI: 00000000ffffff9c [ 42.217836][ T5684] RBP: 0000200000000040 R08: 00007fff7b8ee2b0 R09: 00007fff7b8ee2b0 [ 42.217839][ T5684] R10: 00000000000001ff R11: 0000000000000246 R12: 0000200000000100 [ 42.217842][ T5684] R13: 0000200000000040 R14: 0000000000000002 R15: 00000000004b10a0 [ 42.217846][ T5684] </TASK> Dmitry