Re: [syzbot] [mm?] BUG: unable to handle kernel paging request in list_lru_add

From: syzbot
Date: Wed Dec 27 2023 - 10:50:29 EST


syzbot has found a reproducer for the following issue on:

HEAD commit: fbafc3e621c3 Merge tag 'for_linus' of git://git.kernel.org..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=10dc0065e80000
kernel config: https://syzkaller.appspot.com/x/.config?x=c29fe98c88e5c7ae
dashboard link: https://syzkaller.appspot.com/bug?extid=2403e3909382fbdeaf6c
compiler: aarch64-linux-gnu-gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40
userspace arch: arm64
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=1217a445e80000

Downloadable assets:
disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/384ffdcca292/non_bootable_disk-fbafc3e6.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/44afd70ba00e/vmlinux-fbafc3e6.xz
kernel image: https://storage.googleapis.com/syzbot-assets/2812e972b4b2/Image-fbafc3e6.gz.xz

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

netdevsim netdevsim1 netdevsim1: set [1, 0] type 2 family 0 port 6081 - 0
netdevsim netdevsim1 netdevsim2: set [1, 0] type 2 family 0 port 6081 - 0
netdevsim netdevsim1 netdevsim3: set [1, 0] type 2 family 0 port 6081 - 0
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
Mem abort info:
ESR = 0x0000000097d88004
EC = 0x25: DABT (current EL), IL = 32 bits
SET = 0, FnV = 0
EA = 0, S1PTW = 0
FSC = 0x04: level 0 translation fault
Data abort info:
Access size = 8 byte(s)
SSE = 0, SRT = 24
SF = 1, AR = 0
CM = 0, WnR = 0, TnD = 0, TagAccess = 0
GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
user pgtable: 4k pages, 48-bit VAs, pgdp=0000000045d88000
[0000000000000008] pgd=0000000000000000, p4d=0000000000000000
Internal error: Oops: 0000000097d88004 [#1] PREEMPT SMP
Modules linked in:
CPU: 1 PID: 3148 Comm: syz-executor.1 Not tainted 6.7.0-rc7-syzkaller-00003-gfbafc3e621c3 #0
Hardware name: linux,dummy-virt (DT)
pstate: 61400009 (nZCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--)
pc : list_add_tail include/linux/list.h:183 [inline]
pc : list_lru_add+0xa4/0x188 mm/list_lru.c:129
lr : list_lru_from_memcg_idx mm/list_lru.c:56 [inline]
lr : list_lru_from_memcg_idx mm/list_lru.c:53 [inline]
lr : list_lru_from_kmem mm/list_lru.c:78 [inline]
lr : list_lru_add+0x16c/0x188 mm/list_lru.c:128
sp : ffff800082c23ce0
x29: ffff800082c23ce0 x28: f7ff0000034f2f40 x27: 0000000000000000
x26: 0000000000000000 x25: faff000004d30000 x24: f0ff000005702340
x23: 0000000000000000 x22: 0000000000000000 x21: f8ff000005e0ac58
x20: f0ff000005702340 x19: f4ff000005b05d40 x18: 0000000000000001
x17: 0000000000000000 x16: 0000000000000000 x15: ffff8000803180f8
x14: 0000000000000000 x13: 000000000000039c x12: 0000000000005800
x11: 0000000000000040 x10: 000000000000002e x9 : 0000000000000001
x8 : ffff800082c23af8 x7 : 00000000001fffff x6 : 0000000055555556
x5 : f1ff000002c38b00 x4 : 0000000000000001 x3 : 0000000000000000
x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
Call trace:
list_lru_from_kmem mm/list_lru.c:68 [inline]
list_lru_add+0xa4/0x188 mm/list_lru.c:128
d_lru_add+0x98/0x14c fs/dcache.c:431
retain_dentry fs/dcache.c:685 [inline]
dput+0x194/0x31c fs/dcache.c:908
done_path_create fs/namei.c:3925 [inline]
do_mkdirat+0x90/0x16c fs/namei.c:4132
__do_sys_mkdirat fs/namei.c:4144 [inline]
__se_sys_mkdirat fs/namei.c:4142 [inline]
__arm64_sys_mkdirat+0x50/0x7c fs/namei.c:4142
__invoke_syscall arch/arm64/kernel/syscall.c:37 [inline]
invoke_syscall+0x48/0x114 arch/arm64/kernel/syscall.c:51
el0_svc_common.constprop.0+0x40/0xe0 arch/arm64/kernel/syscall.c:136
do_el0_svc+0x1c/0x28 arch/arm64/kernel/syscall.c:155
el0_svc+0x34/0xd8 arch/arm64/kernel/entry-common.c:678
el0t_64_sync_handler+0x100/0x12c arch/arm64/kernel/entry-common.c:696
el0t_64_sync+0x19c/0x1a0 arch/arm64/kernel/entry.S:595
Code: 8b160316 d2800019 910022d6 aa1603fa (f94006d8)
---[ end trace 0000000000000000 ]---
----------------
Code disassembly (best guess):
0: 8b160316 add x22, x24, x22
4: d2800019 mov x25, #0x0 // #0
8: 910022d6 add x22, x22, #0x8
c: aa1603fa mov x26, x22
* 10: f94006d8 ldr x24, [x22, #8] <-- trapping instruction


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