[syzbot] [ocfs2?] UBSAN: array-index-out-of-bounds in ocfs2_xa_remove_entry

syzbot
2025-12-11T06:22:23Z

Hello,

syzbot found the following issue on:

HEAD commit: c2f2b01b74be Merge tag 'i3c/for-6.19' of git://git.kernel...
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=11a4eeb4580000
kernel config: https://syzkaller.appspot.com/x/.config?x=cf15a4b50e1152e3
dashboard link: https://syzkaller.appspot.com/bug?extid=cf96bc82a588a27346a8
compiler: Debian clang version 20.1.8 (++20250708063551+0c9f909b7976-1~exp1~20250708183702.136), Debian LLD 20.1.8
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=16e89992580000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=15a4eeb4580000

Downloadable assets:
disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/d900f083ada3/non_bootable_disk-c2f2b01b.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/753c2b596a8a/vmlinux-c2f2b01b.xz
kernel image: https://storage.googleapis.com/syzbot-assets/9e3ad31aad53/bzImage-c2f2b01b.xz
mounted in repro #1: https://storage.googleapis.com/syzbot-assets/befacb04d20d/mount_0.gz
fsck result: OK (log: https://syzkaller.appspot.com/x/fsck.log?x=12e89992580000)
mounted in repro #2: https://storage.googleapis.com/syzbot-assets/08da0e96bc06/mount_4.gz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+cf96bc82a588a27346a8@syzkaller.appspotmail.com

=======================================================
JBD2: Ignoring recovery information on journal
ocfs2: Mounting device (7,0) on (node local, slot 0) with ordered data mode.
------------[ cut here ]------------
UBSAN: array-index-out-of-bounds in fs/ocfs2/xattr.c:1955:3
index 2 is out of range for type 'struct ocfs2_xattr_entry[] __counted_by(xh_count)' (aka 'struct ocfs2_xattr_entry[]')
CPU: 0 UID: 0 PID: 5508 Comm: syz.0.17 Not tainted syzkaller #0 PREEMPT(full)
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
Call Trace:
<TASK>
dump_stack_lvl+0x189/0x250 lib/dump_stack.c:120
ubsan_epilogue+0xa/0x40 lib/ubsan.c:233
__ubsan_handle_out_of_bounds+0xe9/0xf0 lib/ubsan.c:455
ocfs2_xa_remove_entry+0x36d/0x3e0 fs/ocfs2/xattr.c:1955
ocfs2_xa_remove fs/ocfs2/xattr.c:2043 [inline]
ocfs2_xa_set+0xaf4/0x2a70 fs/ocfs2/xattr.c:2247
ocfs2_xattr_block_set+0x3ca/0x31b0 fs/ocfs2/xattr.c:2985
__ocfs2_xattr_set_handle+0x27e/0xf20 fs/ocfs2/xattr.c:-1
ocfs2_xattr_set+0xde8/0x11f0 fs/ocfs2/xattr.c:3650
__vfs_removexattr+0x431/0x470 fs/xattr.c:518
__vfs_removexattr_locked+0x1e8/0x230 fs/xattr.c:553
vfs_removexattr+0x80/0x1b0 fs/xattr.c:575
removexattr fs/xattr.c:1023 [inline]
filename_removexattr fs/xattr.c:1052 [inline]
path_removexattrat+0x35d/0x690 fs/xattr.c:1088
__do_sys_lremovexattr fs/xattr.c:1106 [inline]
__se_sys_lremovexattr fs/xattr.c:1103 [inline]
__x64_sys_lremovexattr+0x65/0x80 fs/xattr.c:1103
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xfa/0xf80 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f65fcd8f7c9
Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 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 a8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffc4fa4bdb8 EFLAGS: 00000246 ORIG_RAX: 00000000000000c6
RAX: ffffffffffffffda RBX: 00007f65fcfe5fa0 RCX: 00007f65fcd8f7c9
RDX: 0000000000000000 RSI: 0000200000000280 RDI: 0000200000000240
RBP: 00007f65fce13f91 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007f65fcfe5fa0 R14: 00007f65fcfe5fa0 R15: 0000000000000002
</TASK>
---[ end trace ]---

---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup