Hello,
syzbot has tested the proposed patch but the reproducer still triggered crash:
BUG: unable to handle kernel NULL pointer dereference in __syscall_return_slowpath
BUG: kernel NULL pointer dereference, address: 000000000000000f
#PF: supervisor write access in kernel mode
#PF: error_code(0x0002) - not-present page
PGD 0 P4D 0
Oops: 0002 [#1] PREEMPT SMP KASAN
CPU: 1 PID: 3915 Comm: systemd-udevd Not tainted 5.8.0-rc5-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
RIP: 0010:__syscall_return_slowpath+0x0/0x280 arch/x86/entry/common.c:332
Code: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <00> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
RSP: 0018:ffffc90001077f38 EFLAGS: 00010283
RAX: 000000000000000f RBX: 0000000000000002 RCX: 0000000000000000
RDX: dffffc0000000000 RSI: ffffffff81bccf92 RDI: ffffc90001077f58
RBP: ffffc90001077f58 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
FS: 00007eff400e78c0(0000) GS:ffff8880ae700000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000000000000000f CR3: 00000000a1caa000 CR4: 00000000001406e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
do_syscall_64+0x6c/0xe0 arch/x86/entry/common.c:393
entry_SYSCALL_64_after_hwframe+0x44/0xa9
BUG: kernel NULL pointer dereference, address: 0000000000000000
#PF: supervisor write access in kernel mode
#PF: error_code(0x0002) - not-present page
PGD 0 P4D 0
Oops: 0002 [#2] PREEMPT SMP KASAN
CPU: 1 PID: 3915 Comm: systemd-udevd Not tainted 5.8.0-rc5-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
RIP: 0010:in_gate_area_no_mm+0x0/0x6a arch/x86/entry/vsyscall/vsyscall_64.c:343
Code: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <00> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
RSP: 0018:ffffc90001077450 EFLAGS: 00010093
RAX: 0000000000000000 RBX: ffffc900010774f0 RCX: ffffffff816a5f40
RDX: ffff8880a03642c0 RSI: ffffffff816a5f6b RDI: 00007eff3ef329b1
RBP: 00007eff3ef329b1 R08: ffffc90001077600 R09: ffffffff8c8e0109
R10: 00007eff3ef329b1 R11: 0000000000000000 R12: ffffc90001077600
R13: 0000000000000001 R14: 00007eff3ef329b1 R15: ffffc90001077510
FS: 00007eff400e78c0(0000) GS:ffff8880ae700000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 00000000a1caa000 CR4: 00000000001406e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
is_kernel include/linux/kallsyms.h:44 [inline]
is_ksym_addr include/linux/kallsyms.h:50 [inline]
kallsyms_lookup+0xc3/0x2e0 kernel/kallsyms.c:290
__sprint_symbol+0x9c/0x1c0 kernel/kallsyms.c:363
symbol_string+0x14c/0x370 lib/vsprintf.c:969
pointer+0x185/0x970 lib/vsprintf.c:2226
vsnprintf+0x5b2/0x14f0 lib/vsprintf.c:2624
vscnprintf+0x29/0x80 lib/vsprintf.c:2723
vprintk_store+0x44/0x4a0 kernel/printk/printk.c:1942
vprintk_emit+0x139/0x770 kernel/printk/printk.c:2003
vprintk_func+0x8f/0x1a6 kernel/printk/printk_safe.c:393
printk+0xba/0xed kernel/printk/printk.c:2070
show_ip+0x22/0x30 arch/x86/kernel/dumpstack.c:124
show_iret_regs+0x10/0x32 arch/x86/kernel/dumpstack.c:131
__show_regs+0x18/0x50 arch/x86/kernel/process_64.c:72
show_trace_log_lvl+0x255/0x2b4 arch/x86/kernel/dumpstack.c:274
show_regs arch/x86/kernel/dumpstack.c:447 [inline]
__die_body arch/x86/kernel/dumpstack.c:393 [inline]
__die+0x51/0x90 arch/x86/kernel/dumpstack.c:407
no_context+0x56b/0x9f0 arch/x86/mm/fault.c:695
__bad_area_nosemaphore+0xa9/0x480 arch/x86/mm/fault.c:789
do_user_addr_fault+0x8ce/0xd00 arch/x86/mm/fault.c:1258
handle_page_fault arch/x86/mm/fault.c:1365 [inline]
exc_page_fault+0xab/0x170 arch/x86/mm/fault.c:1418
asm_exc_page_fault+0x1e/0x30 arch/x86/include/asm/idtentry.h:544
RIP: 0010:__syscall_return_slowpath+0x0/0x280 arch/x86/entry/common.c:332
Code: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <00> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
RSP: 0018:ffffc90001077f38 EFLAGS: 00010283
RAX: 000000000000000f RBX: 0000000000000002 RCX: 0000000000000000
RDX: dffffc0000000000 RSI: ffffffff81bccf92 RDI: ffffc90001077f58
RBP: ffffc90001077f58 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
do_syscall_64+0x6c/0xe0 arch/x86/entry/common.c:393
entry_SYSCALL_64_after_hwframe+0x44/0xa9
BUG: kernel NULL pointer dereference, address: 0000000000000000
#PF: supervisor write access in kernel mode
#PF: error_code(0x0002) - not-present page
PGD 0 P4D 0
Oops: 0002 [#3] PREEMPT SMP KASAN
CPU: 1 PID: 3915 Comm: systemd-udevd Not tainted 5.8.0-rc5-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
RIP: 0010:in_gate_area_no_mm+0x0/0x6a arch/x86/entry/vsyscall/vsyscall_64.c:343
Code: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <00> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
RSP: 0018:ffffc90001076940 EFLAGS: 00010093
RAX: 0000000000000000 RBX: ffffc900010769e0 RCX: ffffffff816a5f40
RDX: ffff8880a03642c0 RSI: ffffffff816a5f6b RDI: 00007eff3ef329b1
RBP: 00007eff3ef329b1 R08: ffffc90001076af0 R09: ffff8880ae723d9a
R10: 00007eff3ef329b1 R11: 0000000000000001 R12: ffffc90001076af0
R13: 0000000000000001 R14: 00007eff3ef329b1 R15: ffffc90001076a00
FS: 00007eff400e78c0(0000) GS:ffff8880ae700000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 00000000a1caa000 CR4: 00000000001406e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
is_kernel include/linux/kallsyms.h:44 [inline]
is_ksym_addr include/linux/kallsyms.h:50 [inline]
kallsyms_lookup+0xc3/0x2e0 kernel/kallsyms.c:290
__sprint_symbol+0x9c/0x1c0 kernel/kallsyms.c:363
symbol_string+0x14c/0x370 lib/vsprintf.c:969
pointer+0x185/0x970 lib/vsprintf.c:2226
vsnprintf+0x5b2/0x14f0 lib/vsprintf.c:2624
vscnprintf+0x29/0x80 lib/vsprintf.c:2723
printk_safe_log_store+0xf5/0x250 kernel/printk/printk_safe.c:94
vprintk_safe kernel/printk/printk_safe.c:347 [inline]
vprintk_func+0xef/0x1a6 kernel/printk/printk_safe.c:390
printk+0xba/0xed kernel/printk/printk.c:2070
show_ip+0x22/0x30 arch/x86/kernel/dumpstack.c:124
show_iret_regs+0x10/0x32 arch/x86/kernel/dumpstack.c:131
__show_regs+0x18/0x50 arch/x86/kernel/process_64.c:72
show_trace_log_lvl+0x255/0x2b4 arch/x86/kernel/dumpstack.c:274
show_regs arch/x86/kernel/dumpstack.c:447 [inline]
__die_body arch/x86/kernel/dumpstack.c:393 [inline]
__die+0x51/0x90 arch/x86/kernel/dumpstack.c:407
no_context+0x56b/0x9f0 arch/x86/mm/fault.c:695
__bad_area_nosemaphore+0xa9/0x480 arch/x86/mm/fault.c:789
do_user_addr_fault+0x783/0xd00 arch/x86/mm/fault.c:1171
handle_page_fault arch/x86/mm/fault.c:1365 [inline]
exc_page_fault+0xab/0x170 arch/x86/mm/fault.c:1418
asm_exc_page_fault+0x1e/0x30 arch/x86/include/asm/idtentry.h:544
RIP: 0010:in_gate_area_no_mm+0x0/0x6a arch/x86/entry/vsyscall/vsyscall_64.c:343
Code: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <00> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
RSP: 0018:ffffc90001077450 EFLAGS: 00010093
RAX: 0000000000000000 RBX: ffffc900010774f0 RCX: ffffffff816a5f40
RDX: ffff8880a03642c0 RSI: ffffffff816a5f6b RDI: 00007eff3ef329b1
RBP: 00007eff3ef329b1 R08: ffffc90001077600 R09: ffffffff8c8e0109
R10: 00007eff3ef329b1 R11: 0000000000000000 R12: ffffc90001077600
R13: 0000000000000001 R14: 00007eff3ef329b1 R15: ffffc90001077510
is_kernel include/linux/kallsyms.h:44 [inline]
is_ksym_addr include/linux/kallsyms.h:50 [inline]
kallsyms_lookup+0xc3/0x2e0 kernel/kallsyms.c:290
__sprint_symbol+0x9c/0x1c0 kernel/kallsyms.c:363
symbol_string+0x14c/0x370 lib/vsprintf.c:969
pointer+0x185/0x970 lib/vsprintf.c:2226
vsnprintf+0x5b2/0x14f0 lib/vsprintf.c:2624
vscnprintf+0x29/0x80 lib/vsprintf.c:2723
vprintk_store+0x44/0x4a0 kernel/printk/printk.c:1942
vprintk_emit+0x139/0x770 kernel/printk/printk.c:2003
vprintk_func+0x8f/0x1a6 kernel/printk/printk_safe.c:393
printk+0xba/0xed kernel/printk/printk.c:2070
show_ip+0x22/0x30 arch/x86/kernel/dumpstack.c:124
show_iret_regs+0x10/0x32 arch/x86/kernel/dumpstack.c:131
__show_regs+0x18/0x50 arch/x86/kernel/process_64.c:72
show_trace_log_lvl+0x255/0x2b4 arch/x86/kernel/dumpstack.c:274
show_regs arch/x86/kernel/dumpstack.c:447 [inline]
__die_body arch/x86/kernel/dumpstack.c:393 [inline]
__die+0x51/0x90 arch/x86/kernel/dumpstack.c:407
no_context+0x56b/0x9f0 arch/x86/mm/fault.c:695
__bad_area_nosemaphore+0xa9/0x480 arch/x86/mm/fault.c:789
do_user_addr_fault+0x8ce/0xd00 arch/x86/mm/fault.c:1258
handle_page_fault arch/x86/mm/fault.c:1365 [inline]
exc_page_fault+0xab/0x170 arch/x86/mm/fault.c:1418
asm_exc_page_fault+0x1e/0x30 arch/x86/include/asm/idtentry.h:544
RIP: 0010:__syscall_return_slo
Lost 40 message(s)!
Tested on:
commit: 11ba4688 Linux 5.8-rc5
git tree: upstream
console output:
https://syzkaller.appspot.com/x/log.txt?x=11f4072b100000
kernel config:
https://syzkaller.appspot.com/x/.config?x=42d39eba7e8a778d
dashboard link:
https://syzkaller.appspot.com/bug?extid=832ccf42c61e3c63654e
compiler: gcc (GCC) 10.1.0-syz 20200507