syzbot


BUG: unable to handle kernel NULL pointer dereference in __swap_duplicate

Status: upstream: reported C repro on 2024/06/04 05:39
Subsystems: mm
[Documentation on labels]
Reported-by: syzbot+bf8cb7ae183cd5693ad9@syzkaller.appspotmail.com
First crash: 15d, last: 15d
Discussions (1)
Title Replies (including bot) Last reply
[syzbot] [mm?] BUG: unable to handle kernel NULL pointer dereference in __swap_duplicate 0 (1) 2024/06/04 05:39
Last patch testing requests (1)
Created Duration User Patch Repo Result
2024/06/14 05:35 26m retest repro upstream OK log

Sample crash report:
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000058
Mem abort info:
  ESR = 0x0000000096000004
  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:
  ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
  CM = 0, WnR = 0, TnD = 0, TagAccess = 0
  GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
user pgtable: 4k pages, 52-bit VAs, pgdp=00000000455f8880
[0000000000000058] pgd=0800000046e35003, p4d=0000000000000000
Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP
Modules linked in:
CPU: 1 PID: 3190 Comm: syz-executor681 Not tainted 6.10.0-rc1-syzkaller-00027-g4a4be1ad3a6e #0
Hardware name: linux,dummy-virt (DT)
pstate: 81400009 (Nzcv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--)
pc : lock_cluster mm/swapfile.c:356 [inline]
pc : lock_cluster_or_swap_info mm/swapfile.c:380 [inline]
pc : __swap_duplicate+0x3c/0x178 mm/swapfile.c:3339
lr : swap_duplicate+0x2c/0x54 mm/swapfile.c:3407
sp : ffff800088dd3910
x29: ffff800088dd3910 x28: fff0000006e8cc88 x27: f0f0000006d3bb40
x26: 0000000000000000 x25: fdf0000005ab3900 x24: fcf00000060bf0c0
x23: 0000000000000001 x22: 0000000000000000 x21: 0000000000000000
x20: 0000000000000080 x19: 0000000000000000 x18: 0000000000000001
x17: 0000000000000000 x16: 1f9e000000c1afc1 x15: 0000000000000001
x14: 0000000000000002 x13: 0000000000000000 x12: 0000000000071c09
x11: 0000000000000000 x10: 0000ffffced91000 x9 : 00000000000000f7
x8 : 0000000000000038 x7 : 0000000000000026 x6 : 0000000200100173
x5 : ffff800088dd3900 x4 : 0000000000000080 x3 : ffff8000828a1ad8
x2 : 0000000000000002 x1 : 0000000000000001 x0 : 0800000000000000
Call trace:
 swp_offset include/linux/swapops.h:109 [inline]
 __swap_duplicate+0x3c/0x178 mm/swapfile.c:3338
 swap_duplicate+0x2c/0x54 mm/swapfile.c:3407
 copy_nonpresent_pte mm/memory.c:793 [inline]
 copy_pte_range mm/memory.c:1129 [inline]
 copy_pmd_range mm/memory.c:1240 [inline]
 copy_pud_range mm/memory.c:1277 [inline]
 copy_p4d_range mm/memory.c:1301 [inline]
 copy_page_range+0x1154/0x20a0 mm/memory.c:1399
 dup_mmap kernel/fork.c:751 [inline]
 dup_mm kernel/fork.c:1688 [inline]
 copy_mm+0x420/0x7d4 kernel/fork.c:1737
 copy_process+0xc30/0x1484 kernel/fork.c:2390
 kernel_clone+0x64/0x360 kernel/fork.c:2797
 __do_sys_clone+0x70/0xa8 kernel/fork.c:2940
 __se_sys_clone kernel/fork.c:2908 [inline]
 __arm64_sys_clone+0x20/0x2c kernel/fork.c:2908
 __invoke_syscall arch/arm64/kernel/syscall.c:34 [inline]
 invoke_syscall+0x48/0x118 arch/arm64/kernel/syscall.c:48
 el0_svc_common.constprop.0+0x40/0xe0 arch/arm64/kernel/syscall.c:133
 do_el0_svc+0x1c/0x28 arch/arm64/kernel/syscall.c:152
 el0_svc+0x34/0xf8 arch/arm64/kernel/entry-common.c:712
 el0t_64_sync_handler+0x100/0x12c arch/arm64/kernel/entry-common.c:730
 el0t_64_sync+0x19c/0x1a0 arch/arm64/kernel/entry.S:598
Code: b0012ee3 912b6063 f8627875 9240e413 (f9402ea2) 
---[ end trace 0000000000000000 ]---
----------------
Code disassembly (best guess):
   0:	b0012ee3 	adrp	x3, 0x25dd000
   4:	912b6063 	add	x3, x3, #0xad8
   8:	f8627875 	ldr	x21, [x3, x2, lsl #3]
   c:	9240e413 	and	x19, x0, #0x3ffffffffffffff
* 10:	f9402ea2 	ldr	x2, [x21, #88] <-- trapping instruction

Crashes (1):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/05/31 05:33 upstream 4a4be1ad3a6e 34889ee3 .config console log report syz / log C [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu2-arm64-mte BUG: unable to handle kernel NULL pointer dereference in __swap_duplicate
* Struck through repros no longer work on HEAD.