panic: acquiring blockable sleep lock with spinlock or critical section held (kernel_lock) &kernel_lock (6)

1 view
Skip to first unread message

syzbot

unread,
Mar 22, 2022, 8:00:27 PM3/22/22
to syzkaller-o...@googlegroups.com
Hello,

syzbot found the following issue on:

HEAD commit: bf088e2b2bca Extract the type from the ICMP6 header before..
git tree: openbsd
console output: https://syzkaller.appspot.com/x/log.txt?x=110a4c71700000
kernel config: https://syzkaller.appspot.com/x/.config?x=bf87b6915a88cd0d
dashboard link: https://syzkaller.appspot.com/bug?extid=26d45bf17cadf1c33c65
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=11f6d425700000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=14d8ecb3700000

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

panic: acquiring blockable sleep lock with spinlock or critical section held (kernel_lock) &kernel_lock
Stopped at db_enter+0x18: addq $0x8,%rsp
TID PID UID PRFLAGS PFLAGS CPU COMMAND
462077 83197 0 0 0 0 syz-executor3732941050
*497937 83197 0 0 0x4000000 1 syz-executor3732941050
db_enter() at db_enter+0x18 sys/arch/amd64/amd64/db_interface.c:440
panic(ffffffff825a4184) at panic+0x177 sys/kern/subr_prf.c:202
witness_checkorder(ffffffff82a6f1a0,9,0) at witness_checkorder+0x116d sys/kern/subr_witness.c:833
__mp_lock(ffffffff82a6ef98) at __mp_lock+0xa1 read_rflags machine/cpufunc.h:195 [inline]
__mp_lock(ffffffff82a6ef98) at __mp_lock+0xa1 intr_disable machine/cpufunc.h:216 [inline]
__mp_lock(ffffffff82a6ef98) at __mp_lock+0xa1 sys/kern/kern_lock.c:142
selwakeup(fffffd8070d68138) at selwakeup+0x16 klist_empty sys/sys/event.h:361 [inline]
selwakeup(fffffd8070d68138) at selwakeup+0x16 sys/kern/sys_generic.c:885
sorwakeup(fffffd8070d68020) at sorwakeup+0xc9 sys/kern/uipc_socket.c:1699
rip6_input(ffff8000212527f8,ffff800021252804,85,18) at rip6_input+0x6bc sys/netinet6/raw_ip6.c:224
ip_deliver(ffff8000212527f8,ffff800021252804,85,18) at ip_deliver+0x322 sys/netinet/ip_input.c:657
ip6_input_if(ffff8000212527f8,ffff800021252804,29,0,ffff80000019f2a8) at ip6_input_if+0x920
ipv6_input(ffff80000019f2a8,fffffd807f00d000) at ipv6_input+0x48 sys/netinet6/ip6_input.c:169
if_input_local(ffff80000019f2a8,fffffd807f00d000,18) at if_input_local+0x136 sys/net/if.c:778
ip6_output(fffffd806f667c00,ffff800000bc7e00,fffffd806f6827c8,0,0,fffffd806f682750) at ip6_output+0xf57
rip6_output(fffffd806f667c00,fffffd8070d687a0,ffff800021252b60,0) at rip6_output+0x4ad sys/netinet6/raw_ip6.c:490
rip6_usrreq(fffffd8070d687a0,9,fffffd806f667c00,0,0,ffff8000ffff5268) at rip6_usrreq+0x5d3 sys/netinet6/raw_ip6.c:679
end trace frame: 0xffff800021252ce0, count: 0
https://www.openbsd.org/ddb.html describes the minimum info required in bug
reports. Insufficient info makes it difficult to find and fix bugs.
ddb{1}>
ddb{1}> set $lines = 0
ddb{1}> set $maxwidth = 0
ddb{1}> show panic
*cpu1: acquiring blockable sleep lock with spinlock or critical section held (kernel_lock) &kernel_lock
ddb{1}> trace
db_enter() at db_enter+0x18 sys/arch/amd64/amd64/db_interface.c:440
panic(ffffffff825a4184) at panic+0x177 sys/kern/subr_prf.c:202
witness_checkorder(ffffffff82a6f1a0,9,0) at witness_checkorder+0x116d sys/kern/subr_witness.c:833
__mp_lock(ffffffff82a6ef98) at __mp_lock+0xa1 read_rflags machine/cpufunc.h:195 [inline]
__mp_lock(ffffffff82a6ef98) at __mp_lock+0xa1 intr_disable machine/cpufunc.h:216 [inline]
__mp_lock(ffffffff82a6ef98) at __mp_lock+0xa1 sys/kern/kern_lock.c:142
selwakeup(fffffd8070d68138) at selwakeup+0x16 klist_empty sys/sys/event.h:361 [inline]
selwakeup(fffffd8070d68138) at selwakeup+0x16 sys/kern/sys_generic.c:885
sorwakeup(fffffd8070d68020) at sorwakeup+0xc9 sys/kern/uipc_socket.c:1699
rip6_input(ffff8000212527f8,ffff800021252804,85,18) at rip6_input+0x6bc sys/netinet6/raw_ip6.c:224
ip_deliver(ffff8000212527f8,ffff800021252804,85,18) at ip_deliver+0x322 sys/netinet/ip_input.c:657
ip6_input_if(ffff8000212527f8,ffff800021252804,29,0,ffff80000019f2a8) at ip6_input_if+0x920
ipv6_input(ffff80000019f2a8,fffffd807f00d000) at ipv6_input+0x48 sys/netinet6/ip6_input.c:169
if_input_local(ffff80000019f2a8,fffffd807f00d000,18) at if_input_local+0x136 sys/net/if.c:778
ip6_output(fffffd806f667c00,ffff800000bc7e00,fffffd806f6827c8,0,0,fffffd806f682750) at ip6_output+0xf57
rip6_output(fffffd806f667c00,fffffd8070d687a0,ffff800021252b60,0) at rip6_output+0x4ad sys/netinet6/raw_ip6.c:490
rip6_usrreq(fffffd8070d687a0,9,fffffd806f667c00,0,0,ffff8000ffff5268) at rip6_usrreq+0x5d3 sys/netinet6/raw_ip6.c:679
sosend(fffffd8070d687a0,0,ffff800021252d98,0,0,0) at sosend+0x632 sys/kern/uipc_socket.c:582
dofilewritev(ffff8000ffff5268,4,ffff800021252d98,0,ffff800021252e90) at dofilewritev+0x19c sys/kern/sys_generic.c:381
sys_write(ffff8000ffff5268,ffff800021252e38,ffff800021252e90) at sys_write+0x83 sys/kern/sys_generic.c:301
syscall(ffff800021252f00) at syscall+0x489 mi_syscall sys/sys/syscall_mi.h:102 [inline]
syscall(ffff800021252f00) at syscall+0x489 sys/arch/amd64/amd64/trap.c:585
Xsyscall() at Xsyscall+0x128
end of kernel
end trace frame: 0x4b13d4884f0, count: -19
ddb{1}> show registers
rdi 0
rsi 0x1
rbp 0xffff800021252310
rbx 0xffff800020ce9bff
rdx 0x3fd
rcx 0
rax 0x68
r8 0x101010101010101
r9 0x8080808080808080
r10 0x9a5ab357ddbe94dc
r11 0x8ad10628f1801a4c
r12 0xffff800020ce9a00
r13 0
r14 0
r15 0x1
rip 0xffffffff815a2d98 db_enter+0x18
cs 0x8
rflags 0x246
rsp 0xffff800021252300
ss 0x10
db_enter+0x18: addq $0x8,%rsp
ddb{1}> show proc
PROC (syz-executor3732941050) pid=497937 stat=onproc
flags process=0 proc=4000000<THREAD>
pri=32, usrpri=50, nice=20
forw=0xffffffffffffffff, list=0xffff8000ffff57a8,0xffff8000ffff4fd8
process=0xffff8000211a1d28 user=0xffff80002124d000, vmspace=0xfffffd806ed9be68
estcpu=0, cpticks=1, pctcpu=0.0
user=0, sys=1, intr=0
ddb{1}> ps
PID TID PPID UID S FLAGS WAIT COMMAND
43779 340691 33736 0 2 0 syz-executor3732941050
43779 194434 33736 0 2 0x4000000 syz-executor3732941050
65012 253553 60724 0 2 0 syz-executor3732941050
65012 453626 60724 0 3 0x4000080 fsleep syz-executor3732941050
20156 332837 44552 0 2 0 syz-executor3732941050
81165 492045 23294 0 2 0 syz-executor3732941050
81165 352754 23294 0 3 0x4000080 fsleep syz-executor3732941050
52219 168819 55495 0 2 0 syz-executor3732941050
52219 375114 55495 0 3 0x4000080 fsleep syz-executor3732941050
33736 154633 57578 0 3 0x80 nanoslp syz-executor3732941050
60724 105958 57578 0 3 0x80 nanoslp syz-executor3732941050
23294 392564 57578 0 3 0x80 nanoslp syz-executor3732941050
55495 30878 57578 0 3 0x80 nanoslp syz-executor3732941050
37551 48733 68816 0 2 0 syz-executor3732941050
37551 152617 68816 0 3 0x4000080 fsleep syz-executor3732941050
18824 484162 57578 0 3 0x80 nanoslp syz-executor3732941050
68816 74477 57578 0 2 0x480 syz-executor3732941050
83197 462077 45175 0 7 0 syz-executor3732941050
*83197 497937 45175 0 7 0x4000000 syz-executor3732941050
44552 294960 57578 0 3 0x80 nanoslp syz-executor3732941050
45175 285178 57578 0 2 0x480 syz-executor3732941050
57578 238685 822 0 3 0x82 nanoslp syz-executor3732941050
822 286743 30018 0 3 0x10008a sigsusp ksh
30018 299307 78091 0 3 0x9a kqread sshd
65018 78938 1 0 3 0x100083 ttyin getty
78091 435571 1 0 3 0x88 kqread sshd
91094 304706 72984 74 3 0x1100092 bpf pflogd
72984 463441 1 0 3 0x80 netio pflogd
228 257061 80045 73 3 0x1100090 kqread syslogd
80045 231335 1 0 3 0x100082 netio syslogd
96787 194549 1 0 3 0x100080 kqread resolvd
23498 122337 43557 77 3 0x100092 kqread dhcpleased
59328 144494 43557 77 3 0x100092 kqread dhcpleased
43557 213549 1 0 3 0x80 kqread dhcpleased
56525 45749 0 0 3 0x14200 bored smr
96491 453410 0 0 2 0x14200 zerothread
31536 236172 0 0 3 0x14200 aiodoned aiodoned
82366 57973 0 0 3 0x14200 syncer update
99848 209167 0 0 3 0x14200 cleaner cleaner
84451 417746 0 0 3 0x14200 reaper reaper
85964 98850 0 0 3 0x14200 pgdaemon pagedaemon
38176 135364 0 0 3 0x14200 bored viomb
86421 152786 0 0 3 0x40014200 acpi0 acpi0
11243 309088 0 0 3 0x40014200 idle1
66976 374081 0 0 3 0x14200 bored softnet
31153 469893 0 0 3 0x14200 bored systqmp
10037 349188 0 0 3 0x14200 bored systq
26604 113991 0 0 3 0x40014200 bored softclock
28005 360364 0 0 3 0x40014200 idle0
1 178392 0 0 3 0x82 wait init
0 0 -1 0 3 0x10200 scheduler swapper
ddb{1}> show all locks
CPU 1:
exclusive mutex &table->inpt_mtx r = 0 (0xffffffff82a21700)
#0 witness_lock+0x44d
#1 mtx_enter_try+0x100
#2 mtx_enter+0x4b sys/kern/kern_lock.c:266
#3 rip6_input+0x28f
#4 ip_deliver+0x322 sys/netinet/ip_input.c:657
#5 ip6_input_if+0x920
#6 ipv6_input+0x48 sys/netinet6/ip6_input.c:169
#7 if_input_local+0x136 sys/net/if.c:778
#8 ip6_output+0xf57
#9 rip6_output+0x4ad sys/netinet6/raw_ip6.c:490
#10 rip6_usrreq+0x5d3 sys/netinet6/raw_ip6.c:679
#11 sosend+0x632 sys/kern/uipc_socket.c:582
#12 dofilewritev+0x19c sys/kern/sys_generic.c:381
#13 sys_write+0x83 sys/kern/sys_generic.c:301
#14 syscall+0x489 mi_syscall sys/sys/syscall_mi.h:102 [inline]
#14 syscall+0x489 sys/arch/amd64/amd64/trap.c:585
#15 Xsyscall+0x128
Process 83197 (syz-executor3732941050) thread 0xffff8000ffff5268 (497937)
exclusive rwlock netlock r = 0 (0xffffffff829bbd70)
#0 witness_lock+0x44d
#1 solock+0x86 sys/kern/uipc_socket2.c:295
#2 sosend+0x517 sys/kern/uipc_socket.c:570
#3 dofilewritev+0x19c sys/kern/sys_generic.c:381
#4 sys_write+0x83 sys/kern/sys_generic.c:301
#5 syscall+0x489 mi_syscall sys/sys/syscall_mi.h:102 [inline]
#5 syscall+0x489 sys/arch/amd64/amd64/trap.c:585
#6 Xsyscall+0x128
exclusive mutex &table->inpt_mtx r = 0 (0xffffffff82a21700)
#0 witness_lock+0x44d
#1 mtx_enter_try+0x100
#2 mtx_enter+0x4b sys/kern/kern_lock.c:266
#3 rip6_input+0x28f
#4 ip_deliver+0x322 sys/netinet/ip_input.c:657
#5 ip6_input_if+0x920
#6 ipv6_input+0x48 sys/netinet6/ip6_input.c:169
#7 if_input_local+0x136 sys/net/if.c:778
#8 ip6_output+0xf57
#9 rip6_output+0x4ad sys/netinet6/raw_ip6.c:490
#10 rip6_usrreq+0x5d3 sys/netinet6/raw_ip6.c:679
#11 sosend+0x632 sys/kern/uipc_socket.c:582
#12 dofilewritev+0x19c sys/kern/sys_generic.c:381
#13 sys_write+0x83 sys/kern/sys_generic.c:301
#14 syscall+0x489 mi_syscall sys/sys/syscall_mi.h:102 [inline]
#14 syscall+0x489 sys/arch/amd64/amd64/trap.c:585
#15 Xsyscall+0x128
ddb{1}> show malloc
Type InUse MemUse HighUse Limit Requests Type Lim
devbuf 10149 6454K 6455K 78643K 11239 0
pcb 17 8K 8K 78643K 23 0
rtable 62 2K 2K 78643K 118 0
ifaddr 29 8K 8K 78643K 32 0
counters 40 33K 33K 78643K 40 0
ioctlops 0 0K 4K 78643K 1479 0
mount 1 1K 1K 78643K 1 0
log 0 0K 0K 78643K 4 0
vnodes 1167 73K 73K 78643K 1180 0
UFS quota 1 32K 32K 78643K 1 0
UFS mount 5 36K 36K 78643K 5 0
shm 2 1K 1K 78643K 2 0
VM map 2 1K 1K 78643K 2 0
sem 2 0K 0K 78643K 2 0
dirhash 12 2K 2K 78643K 12 0
ACPI 1697 195K 286K 78643K 12548 0
file desc 1 0K 0K 78643K 1 0
proc 67 87K 87K 78643K 282 0
NFS srvsock 1 0K 0K 78643K 1 0
NFS daemon 1 16K 16K 78643K 1 0
ip_moptions 2 0K 0K 78643K 3 0
in_multi 14 0K 0K 78643K 16 0
ether_multi 2 0K 0K 78643K 3 0
ISOFS mount 1 32K 32K 78643K 1 0
MSDOSFS mount 1 16K 16K 78643K 1 0
ttys 25 122K 122K 78643K 25 0
exec 0 0K 2K 78643K 447 0
tdb 3 0K 0K 78643K 3 0
pagedep 1 8K 8K 78643K 1 0
inodedep 1 32K 32K 78643K 1 0
newblk 1 0K 0K 78643K 1 0
VM swap 7 26K 26K 78643K 7 0
UVM amap 173 7K 7K 78643K 2351 0
UVM aobj 3 2K 2K 78643K 3 0
memdesc 1 4K 4K 78643K 1 0
crypto data 1 1K 1K 78643K 1 0
ip6_options 4 0K 0K 78643K 6 0
NDP 4 0K 0K 78643K 4 0
temp 24 4694K 4757K 78643K 3392 0
kqueue 11 16K 18K 78643K 24 0
SYN cache 2 16K 16K 78643K 2 0
ddb{1}> show all pools
Name Size Requests Fail Releases Pgreq Pgrel Npage Hiwat Minpg Maxpg Idle
plcache 128 22 0 0 1 0 1 1 0 8 0
rtpcb 120 20 0 17 1 0 1 1 0 8 0
rtentry 112 23 0 1 1 0 1 1 0 8 0
unpcb 136 35 0 20 1 0 1 1 0 8 0
syncache 296 5 0 5 2 1 1 1 0 8 1
tcpcb 736 11 0 5 1 0 1 1 0 8 0
arp 120 2 0 0 1 0 1 1 0 8 0
inpcb 312 41 0 31 1 0 1 1 0 8 0
pfosfp 40 1428 0 1005 5 0 5 5 0 8 0
pfosfpen 112 1428 0 714 21 0 21 21 0 8 0
pfstitem 24 11 0 0 1 0 1 1 0 8 0
pfstkey 112 11 0 0 1 0 1 1 0 8 0
pfstate 320 11 0 0 1 0 1 1 0 8 0
pfrule 1360 21 0 16 2 1 1 2 0 8 0
art_heap8 4096 1 0 0 1 0 1 1 0 8 0
art_heap4 256 97 0 0 7 0 7 7 0 8 0
art_table 32 98 0 0 1 0 1 1 0 8 0
art_node 16 22 0 2 1 0 1 1 0 8 0
dirhash 1024 17 0 0 3 0 3 3 0 8 0
dino2pl 256 1424 0 39 87 0 87 87 0 8 0
ffsino 272 1424 0 39 93 0 93 93 0 8 0
nchpl 144 1599 0 49 58 0 58 58 0 8 0
uvmvnodes 80 1434 0 0 30 0 30 30 0 8 0
vnodes 224 1434 0 0 85 0 85 85 0 8 0
namei 1024 4472 0 4472 2 1 1 1 0 8 1
percpumem 16 32 0 0 1 0 1 1 0 8 0
scxspl 216 3908 0 3908 2 1 1 2 0 8 1
plimitpl 152 16 0 9 1 0 1 1 0 8 0
sigapl 424 345 0 300 5 0 5 5 0 8 0
futexpl 64 10 0 6 1 0 1 1 0 8 0
knotepl 120 42 0 0 2 0 2 2 0 8 0
kqueuepl 216 20 0 13 1 0 1 1 0 8 0
pipepl 336 89 0 86 2 1 1 1 0 8 0
fdescpl 496 331 0 301 4 0 4 4 0 8 0
filepl 152 1172 0 1110 3 0 3 3 0 8 0
lockfpl 104 6 0 4 1 0 1 1 0 8 0
lockfspl 48 4 0 2 1 0 1 1 0 8 0
sessionpl 144 18 0 9 1 0 1 1 0 8 0
pgrppl 48 18 0 9 1 0 1 1 0 8 0
ucredpl 96 69 0 57 1 0 1 1 0 8 0
zombiepl 144 301 0 300 2 1 1 1 0 8 0
processpl 1064 345 0 300 3 0 3 3 0 8 0
procpl 672 352 0 301 5 0 5 5 0 8 0
sockpl 480 96 0 68 5 1 4 4 0 8 0
mcl8k 8192 4 0 0 1 0 1 1 0 8 0
mcl4k 4096 2 0 0 1 0 1 1 0 8 0
mcl2k 2048 65 0 0 8 0 8 8 0 8 0
mtagpl 96 2 0 0 1 0 1 1 0 8 0
mbufpl 256 111 0 0 7 0 7 7 0 8 0
bufpl 288 2025 0 94 138 0 138 138 0 8 0
anonpl 24 44997 0 40623 31 3 28 28 0 186 0
amapchunkpl 152 4309 0 3974 14 0 14 14 0 158 0
amappl16 200 35 0 30 2 1 1 1 0 8 0
amappl15 192 70 0 67 1 0 1 1 0 8 0
amappl13 176 34 0 33 2 1 1 1 0 8 0
amappl12 168 21 0 21 2 1 1 1 0 8 1
amappl11 160 50 0 36 1 0 1 1 0 8 0
amappl10 152 4 0 2 1 0 1 1 0 8 0
amappl9 144 468 0 465 1 0 1 1 0 8 0
amappl8 136 399 0 380 1 0 1 1 0 8 0
amappl7 128 66 0 63 1 0 1 1 0 8 0
amappl6 120 118 0 105 1 0 1 1 0 8 0
amappl5 112 180 0 168 1 0 1 1 0 8 0
amappl4 104 655 0 635 1 0 1 1 0 8 0
amappl3 96 125 0 116 1 0 1 1 0 8 0
amappl2 88 388 0 349 1 0 1 1 0 8 0
amappl1 80 9085 0 8608 12 2 10 10 0 8 0
amappl 88 2055 0 1904 4 0 4 4 0 92 0
dma4096 4096 1 0 1 1 1 0 1 0 8 0
dma1024 1024 1 0 0 1 0 1 1 0 8 0
dma256 256 6 0 6 1 1 0 1 0 8 0
dma128 128 253 0 253 1 1 0 1 0 8 0
dma64 64 6 0 6 1 1 0 1 0 8 0
dma32 32 7 0 7 1 1 0 1 0 8 0
dma16 16 18 0 17 1 0 1 1 0 8 0
aobjpl 72 2 0 0 1 0 1 1 0 8 0
uaddrrnd 24 331 0 301 1 0 1 1 0 8 0
uaddrbest 32 2 0 0 1 0 1 1 0 8 0
uaddr 24 331 0 301 1 0 1 1 0 8 0
vmmpekpl 168 6316 0 6298 1 0 1 1 0 8 0
vmmpepl 168 27811 0 26462 63 2 61 61 0 357 0
vmsppl 368 330 0 301 3 0 3 3 0 8 0
rwobjpl 56 9898 0 7776 31 0 31 31 0 8 0
pdppl 4096 669 0 602 94 25 69 69 0 8 2
pvpl 32 141322 0 134680 59 3 56 56 0 265 0
pmappl 248 330 0 301 2 0 2 2 0 8 0
extentpl 40 58 0 38 1 0 1 1 0 8 0
phpool 112 454 0 30 13 0 13 13 0 8 0
ddb{1}> machine ddbcpu 0
Stopped at x86_ipi_db+0x1a: addq $0x8,%rsp
x86_ipi_db(ffffffff82986ff0) at x86_ipi_db+0x1a sys/arch/amd64/amd64/db_interface.c:393
x86_ipi_handler() at x86_ipi_handler+0xb7 sys/arch/amd64/amd64/ipi.c:106
Xresume_lapic_ipi() at Xresume_lapic_ipi+0x23
end of kernel
end trace frame: 0x7f7ffffeb2a0, count: 12
ddb{0}> trace
x86_ipi_db(ffffffff82986ff0) at x86_ipi_db+0x1a sys/arch/amd64/amd64/db_interface.c:393
x86_ipi_handler() at x86_ipi_handler+0xb7 sys/arch/amd64/amd64/ipi.c:106
Xresume_lapic_ipi() at Xresume_lapic_ipi+0x23
end of kernel
end trace frame: 0x7f7ffffeb2a0, count: -3
ddb{0}> machine ddbcpu 1
Stopped at db_enter+0x18: addq $0x8,%rsp
db_enter() at db_enter+0x18 sys/arch/amd64/amd64/db_interface.c:440
panic(ffffffff825a4184) at panic+0x177 sys/kern/subr_prf.c:202
witness_checkorder(ffffffff82a6f1a0,9,0) at witness_checkorder+0x116d sys/kern/subr_witness.c:833
__mp_lock(ffffffff82a6ef98) at __mp_lock+0xa1 read_rflags machine/cpufunc.h:195 [inline]
__mp_lock(ffffffff82a6ef98) at __mp_lock+0xa1 intr_disable machine/cpufunc.h:216 [inline]
__mp_lock(ffffffff82a6ef98) at __mp_lock+0xa1 sys/kern/kern_lock.c:142
selwakeup(fffffd8070d68138) at selwakeup+0x16 klist_empty sys/sys/event.h:361 [inline]
selwakeup(fffffd8070d68138) at selwakeup+0x16 sys/kern/sys_generic.c:885
sorwakeup(fffffd8070d68020) at sorwakeup+0xc9 sys/kern/uipc_socket.c:1699
rip6_input(ffff8000212527f8,ffff800021252804,85,18) at rip6_input+0x6bc sys/netinet6/raw_ip6.c:224
ip_deliver(ffff8000212527f8,ffff800021252804,85,18) at ip_deliver+0x322 sys/netinet/ip_input.c:657
ip6_input_if(ffff8000212527f8,ffff800021252804,29,0,ffff80000019f2a8) at ip6_input_if+0x920
ipv6_input(ffff80000019f2a8,fffffd807f00d000) at ipv6_input+0x48 sys/netinet6/ip6_input.c:169
if_input_local(ffff80000019f2a8,fffffd807f00d000,18) at if_input_local+0x136 sys/net/if.c:778
ip6_output(fffffd806f667c00,ffff800000bc7e00,fffffd806f6827c8,0,0,fffffd806f682750) at ip6_output+0xf57
rip6_output(fffffd806f667c00,fffffd8070d687a0,ffff800021252b60,0) at rip6_output+0x4ad sys/netinet6/raw_ip6.c:490
rip6_usrreq(fffffd8070d687a0,9,fffffd806f667c00,0,0,ffff8000ffff5268) at rip6_usrreq+0x5d3 sys/netinet6/raw_ip6.c:679
end trace frame: 0xffff800021252ce0, count: 0
ddb{1}> trace
db_enter() at db_enter+0x18 sys/arch/amd64/amd64/db_interface.c:440
panic(ffffffff825a4184) at panic+0x177 sys/kern/subr_prf.c:202
witness_checkorder(ffffffff82a6f1a0,9,0) at witness_checkorder+0x116d sys/kern/subr_witness.c:833
__mp_lock(ffffffff82a6ef98) at __mp_lock+0xa1 read_rflags machine/cpufunc.h:195 [inline]
__mp_lock(ffffffff82a6ef98) at __mp_lock+0xa1 intr_disable machine/cpufunc.h:216 [inline]
__mp_lock(ffffffff82a6ef98) at __mp_lock+0xa1 sys/kern/kern_lock.c:142
selwakeup(fffffd8070d68138) at selwakeup+0x16 klist_empty sys/sys/event.h:361 [inline]
selwakeup(fffffd8070d68138) at selwakeup+0x16 sys/kern/sys_generic.c:885
sorwakeup(fffffd8070d68020) at sorwakeup+0xc9 sys/kern/uipc_socket.c:1699
rip6_input(ffff8000212527f8,ffff800021252804,85,18) at rip6_input+0x6bc sys/netinet6/raw_ip6.c:224
ip_deliver(ffff8000212527f8,ffff800021252804,85,18) at ip_deliver+0x322 sys/netinet/ip_input.c:657
ip6_input_if(ffff8000212527f8,ffff800021252804,29,0,ffff80000019f2a8) at ip6_input_if+0x920
ipv6_input(ffff80000019f2a8,fffffd807f00d000) at ipv6_input+0x48 sys/netinet6/ip6_input.c:169
if_input_local(ffff80000019f2a8,fffffd807f00d000,18) at if_input_local+0x136 sys/net/if.c:778
ip6_output(fffffd806f667c00,ffff800000bc7e00,fffffd806f6827c8,0,0,fffffd806f682750) at ip6_output+0xf57
rip6_output(fffffd806f667c00,fffffd8070d687a0,ffff800021252b60,0) at rip6_output+0x4ad sys/netinet6/raw_ip6.c:490
rip6_usrreq(fffffd8070d687a0,9,fffffd806f667c00,0,0,ffff8000ffff5268) at rip6_usrreq+0x5d3 sys/netinet6/raw_ip6.c:679
sosend(fffffd8070d687a0,0,ffff800021252d98,0,0,0) at sosend+0x632 sys/kern/uipc_socket.c:582
dofilewritev(ffff8000ffff5268,4,ffff800021252d98,0,ffff800021252e90) at dofilewritev+0x19c sys/kern/sys_generic.c:381
sys_write(ffff8000ffff5268,ffff800021252e38,ffff800021252e90) at sys_write+0x83 sys/kern/sys_generic.c:301
syscall(ffff800021252f00) at syscall+0x489 mi_syscall sys/sys/syscall_mi.h:102 [inline]
syscall(ffff800021252f00) at syscall+0x489 sys/arch/amd64/amd64/trap.c:585
Xsyscall() at Xsyscall+0x128
end of kernel
end trace frame: 0x4b13d4884f0, count: -19
ddb{1}>


---
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 syzk...@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
syzbot can test patches for this issue, for details see:
https://goo.gl/tpsmEJ#testing-patches

Alexander Bluhm

unread,
Mar 23, 2022, 3:21:51 PM3/23/22
to syzbot, syzkaller-o...@googlegroups.com
#syz fix: For raw IPv6 packets rip6_input() traverses the loop of all PCBs. From there it calls sbappendaddr() while holding the raw6 table mutex. This ends in sorwakeup() where we finally grab the kernel lock while holding a mutex. Witness detects this misuse. Use the same solution as for PCB notify. Collect the affected PCBs in a temporary list. The list is protected by exclusive net lock. Reported-by: syzbot+5b2679...@syzkaller.appspotmail.com OK claudio@
> --
> You received this message because you are subscribed to the Google Groups "syzkaller-openbsd-bugs" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to syzkaller-openbsd...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/syzkaller-openbsd-bugs/000000000000aa00bf05dad76a8d%40google.com.
Reply all
Reply to author
Forward
0 new messages