Re: [syzbot] [mm?] BUG: corrupted list in do_compact_page

From: syzbot
Date: Thu Oct 03 2024 - 01:22:33 EST


syzbot has found a reproducer for the following issue on:

HEAD commit: f23aa4c0761a Merge tag 'hid-for-linus-2024090201' of git:/..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=13904b9f980000
kernel config: https://syzkaller.appspot.com/x/.config?x=6248f0ab12f33349
dashboard link: https://syzkaller.appspot.com/bug?extid=b7a3118f6a494674077f
compiler: gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=174ab580580000

Downloadable assets:
disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/7feb34a89c2a/non_bootable_disk-f23aa4c0.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/6b65e6e0b52b/vmlinux-f23aa4c0.xz
kernel image: https://storage.googleapis.com/syzbot-assets/5dd7d20b144c/bzImage-f23aa4c0.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+b7a3118f6a494674077f@xxxxxxxxxxxxxxxxxxxxxxxxx

list_add corruption. next->prev should be prev (ffffe8fefc9300e0), but was ffff88810a694800. (next=ffff88810868fc00).
------------[ cut here ]------------
kernel BUG at lib/list_debug.c:29!
Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI
CPU: 3 UID: 0 PID: 69 Comm: kworker/u32:3 Not tainted 6.12.0-rc1-syzkaller-00042-gf23aa4c0761a #0
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
Workqueue: zswap1 compact_page_work
RIP: 0010:__list_add_valid_or_report+0xa9/0x100 lib/list_debug.c:29
Code: 9d d1 8b e8 19 93 d8 fc 90 0f 0b 48 c7 c7 60 9e d1 8b e8 0a 93 d8 fc 90 0f 0b 48 89 d9 48 c7 c7 c0 9e d1 8b e8 f8 92 d8 fc 90 <0f> 0b 48 89 f1 48 c7 c7 40 9f d1 8b 48 89 de e8 e3 92 d8 fc 90 0f
RSP: 0018:ffffc90000d67bf8 EFLAGS: 00010286
RAX: 0000000000000075 RBX: ffff88810868fc00 RCX: ffffffff816d47e9
RDX: 0000000000000000 RSI: ffffffff816df0e6 RDI: 0000000000000005
RBP: ffff888040c49000 R08: 0000000000000005 R09: 0000000000000000
R10: 0000000000000002 R11: 0000000000000000 R12: ffff88810868fc00
R13: ffff888040c490b0 R14: ffffea0001031240 R15: ffff888040c49008
FS: 0000000000000000(0000) GS:ffff88806a900000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000055555b764808 CR3: 000000006493a000 CR4: 0000000000352ef0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
__list_add_valid include/linux/list.h:88 [inline]
__list_add include/linux/list.h:150 [inline]
list_add include/linux/list.h:169 [inline]
add_to_unbuddied mm/z3fold.c:550 [inline]
do_compact_page+0x10f2/0x27b0 mm/z3fold.c:772
process_one_work+0x9c5/0x1ba0 kernel/workqueue.c:3229
process_scheduled_works kernel/workqueue.c:3310 [inline]
worker_thread+0x6c8/0xf00 kernel/workqueue.c:3391
kthread+0x2c1/0x3a0 kernel/kthread.c:389
ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
</TASK>
Modules linked in:
---[ end trace 0000000000000000 ]---
RIP: 0010:__list_add_valid_or_report+0xa9/0x100 lib/list_debug.c:29
Code: 9d d1 8b e8 19 93 d8 fc 90 0f 0b 48 c7 c7 60 9e d1 8b e8 0a 93 d8 fc 90 0f 0b 48 89 d9 48 c7 c7 c0 9e d1 8b e8 f8 92 d8 fc 90 <0f> 0b 48 89 f1 48 c7 c7 40 9f d1 8b 48 89 de e8 e3 92 d8 fc 90 0f
RSP: 0018:ffffc90000d67bf8 EFLAGS: 00010286

RAX: 0000000000000075 RBX: ffff88810868fc00 RCX: ffffffff816d47e9
RDX: 0000000000000000 RSI: ffffffff816df0e6 RDI: 0000000000000005
RBP: ffff888040c49000 R08: 0000000000000005 R09: 0000000000000000
R10: 0000000000000002 R11: 0000000000000000 R12: ffff88810868fc00
R13: ffff888040c490b0 R14: ffffea0001031240 R15: ffff888040c49008
FS: 0000000000000000(0000) GS:ffff88806a900000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000055555b764808 CR3: 000000006493a000 CR4: 0000000000352ef0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400


---
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.