witness: lock order reversal: 1st 0xfffffd807efff2f8 vmmaplk (&map->lock) 2nd 0xfffffd8057f31a28 inode (&ip->i_lock) lock order "&ip->i_lock"(rrwlock) -> "&map->lock"(rwlock) first seen at: #0 witness_checkorder+0x65e witness_lock_order_add sys/kern/subr_witness.c:2463 [inline] #0 witness_checkorder+0x65e sys/kern/subr_witness.c:880 #1 rw_enter_read+0x66 sys/kern/kern_rwlock.c:111 #2 uvmfault_lookup+0xd9 sys/uvm/uvm_fault.c:1438 #3 uvm_fault+0x7e sys/uvm/uvm_fault.c:526 #4 pageflttrap+0x254 sys/arch/amd64/amd64/trap.c:219 #5 kerntrap+0xf1 sys/arch/amd64/amd64/trap.c:301 #6 alltraps_kern_meltdown+0x7b #7 copyout+0x53 #8 ffs_read+0x3e2 sys/ufs/ffs/ffs_vnops.c:258 #9 VOP_READ+0xbf sys/kern/vfs_vops.c:247 #10 vn_rdwr+0x10b #11 vmcmd_map_readvn+0xda sys/kern/exec_subr.c:246 #12 exec_process_vmcmds+0xb2 sys/kern/exec_subr.c:143 #13 sys_execve+0x9ff sys/kern/kern_exec.c:461 #14 syscall+0x4a1 mi_syscall sys/sys/syscall_mi.h:102 [inline] #14 syscall+0x4a1 sys/arch/amd64/amd64/trap.c:567 #15 Xsyscall+0x128 lock order "&map->lock"(rwlock) -> "&ip->i_lock"(rrwlock) first seen at: #0 witness_checkorder+0x65e witness_lock_order_add sys/kern/subr_witness.c:2463 [inline] #0 witness_checkorder+0x65e sys/kern/subr_witness.c:880 #1 rw_enter+0xd4 #2 rrw_enter+0x88 sys/kern/kern_rwlock.c:462 #3 VOP_LOCK+0x4b sys/kern/vfs_vops.c:603 #4 vn_lock+0x6c sys/kern/vfs_vnops.c:575 #5 uvn_io+0x2b5 sys/uvm/uvm_vnode.c:1196 #6 uvn_get+0x226 sys/uvm/uvm_vnode.c:1056 #7 uvm_fault+0x1197 sys/uvm/uvm_fault.c:1016 #8 uvm_fault_wire+0x63 sys/uvm/uvm_fault.c:1285 #9 uvm_map_pageable_wire+0x30d sys/uvm/uvm_map.c:2367 #10 sys_mlock+0x180 sys/uvm/uvm_mmap.c:767 #11 syscall+0x4a1 mi_syscall sys/sys/syscall_mi.h:102 [inline] #11 syscall+0x4a1 sys/arch/amd64/amd64/trap.c:567 #12 Xsyscall+0x128 Stopped at db_enter+0x18: addq $0x8,%rsp ddb{1}> ddb{1}> set $lines = 0 ddb{1}> set $maxwidth = 0 ddb{1}> show panic the kernel did not panic ddb{1}> trace db_enter() at db_enter+0x18 sys/arch/amd64/amd64/db_interface.c:398 witness_checkorder(fffffd8057f31a28,9,0) at witness_checkorder+0xf5a witness_debugger sys/kern/subr_witness.c:2490 [inline] witness_checkorder(fffffd8057f31a28,9,0) at witness_checkorder+0xf5a sys/kern/subr_witness.c:1087 rw_enter(fffffd8057f31a18,81) at rw_enter+0xd4 rrw_enter(fffffd8057f31a18,81) at rrw_enter+0x88 sys/kern/kern_rwlock.c:462 VOP_LOCK(fffffd806e618758,81) at VOP_LOCK+0x4b sys/kern/vfs_vops.c:603 vn_lock(fffffd806e618758,81) at vn_lock+0x6c sys/kern/vfs_vnops.c:575 uvn_io(fffffd806e61e0d8,ffff80002570e3f8,1,2,0) at uvn_io+0x2b5 sys/uvm/uvm_vnode.c:1196 uvn_get(fffffd806e61e0d8,0,ffff80002570e650,ffff80002570e5ec,0,5) at uvn_get+0x226 sys/uvm/uvm_vnode.c:1056 uvm_fault(fffffd807efff2e0,20000000,2,5) at uvm_fault+0x1197 sys/uvm/uvm_fault.c:1016 uvm_fault_wire(fffffd807efff2e0,20000000,20003000,5) at uvm_fault_wire+0x63 sys/uvm/uvm_fault.c:1285 uvm_map_pageable_wire(fffffd807efff2e0,fffffd80084e8850,fffffd80084e8c40,23d,ffffffff817c4f5e,0) at uvm_map_pageable_wire+0x30d sys/uvm/uvm_map.c:2367 sys_mlock(ffff8000ffffaee8,ffff80002570e838,ffff80002570e880) at sys_mlock+0x180 sys/uvm/uvm_mmap.c:767 syscall(ffff80002570e900) at syscall+0x4a1 mi_syscall sys/sys/syscall_mi.h:102 [inline] syscall(ffff80002570e900) at syscall+0x4a1 sys/arch/amd64/amd64/trap.c:567 Xsyscall() at Xsyscall+0x128 end of kernel end trace frame: 0x84056c38ac0, count: -14 ddb{1}> show registers rdi 0x3 rsi 0x40000 acpi_pdirpa+0x2be68 rbp 0xffff80002570e050 rbx 0x3 rdx 0xffff800000af0040 rcx 0x3 rax 0x3ffff acpi_pdirpa+0x2be67 r8 0xffffffff817c2c03 witness_checkorder+0xf33 r9 0x5 r10 0xfa74c878f213491b r11 0x7307e30a2af26a6b r12 0xffffffff8286a100 w_lodata+0x546f0 r13 0 r14 0xffffffff82855860 w_lodata+0x3fe50 r15 0xfffffd8002c8a480 rip 0xffffffff81878348 db_enter+0x18 cs 0x8 rflags 0x246 rsp 0xffff80002570e040 ss 0x10 db_enter+0x18: addq $0x8,%rsp ddb{1}> show proc PROC (syz-executor.1) pid=241075 stat=onproc flags process=10 proc=4000000 pri=32, usrpri=86, nice=20 forw=0xffffffffffffffff, list=0xffff8000ffffbb40,0xffffffff82888be0 process=0xffff8000ffff83f8 user=0xffff800025709000, vmspace=0xfffffd807efff2e0 estcpu=36, cpticks=0, pctcpu=0.0 user=0, sys=0, intr=0 ddb{1}> ps PID TID PPID UID S FLAGS WAIT COMMAND 86018 261278 97425 32767 2 0x10 syz-executor.1 *86018 241075 97425 32767 7 0x4000010 syz-executor.1 77218 415610 0 0 3 0x14200 bored sosplice 97425 208102 65812 32767 3 0x90 nanosleep syz-executor.1 20029 229462 57437 32767 2 0x10 syz-executor.0 65812 439677 34607 0 3 0x82 wait syz-executor.1 57437 129860 34607 0 3 0x82 wait syz-executor.0 34607 345634 96522 0 3 0x82 thrsleep syz-fuzzer 34607 115734 96522 0 3 0x4000082 nanosleep syz-fuzzer 34607 266278 96522 0 3 0x4000082 thrsleep syz-fuzzer 34607 423164 96522 0 7 0x4000002 syz-fuzzer 34607 203589 96522 0 3 0x4000082 kqread syz-fuzzer 34607 228155 96522 0 3 0x4000082 thrsleep syz-fuzzer 34607 343808 96522 0 3 0x4000082 thrsleep syz-fuzzer 34607 115551 96522 0 3 0x4000082 thrsleep syz-fuzzer 96522 433018 43146 0 3 0x10008a pause ksh 43146 108617 95439 0 3 0x92 select sshd 70075 270319 1 0 3 0x100083 ttyin getty 95439 487767 1 0 3 0x80 select sshd 9140 128795 45100 73 3 0x100090 kqread syslogd 45100 129414 1 0 3 0x100082 netio syslogd 96892 189752 1 77 3 0x100090 poll dhclient 42369 78288 1 0 3 0x80 poll dhclient 38900 51442 0 0 3 0x14200 bored smr 2069 130741 0 0 2 0x14200 zerothread 26609 386577 0 0 3 0x14200 aiodoned aiodoned 64615 157134 0 0 3 0x14200 syncer update 48129 450639 0 0 3 0x14200 cleaner cleaner 83577 114343 0 0 3 0x14200 reaper reaper 96352 504786 0 0 3 0x14200 pgdaemon pagedaemon 56763 467047 0 0 3 0x14200 bored crynlk 89854 384144 0 0 3 0x14200 bored crypto 77582 54700 0 0 3 0x40014200 acpi0 acpi0 41873 295550 0 0 3 0x40014200 idle1 82151 122861 0 0 3 0x14200 bored softnet 6496 210132 0 0 3 0x14200 bored systqmp 11443 210515 0 0 3 0x14200 bored systq 72671 108552 0 0 3 0x40014200 bored softclock 13801 437753 0 0 3 0x40014200 idle0 1 386113 0 0 3 0x82 wait init 0 0 -1 0 3 0x10200 scheduler swapper ddb{1}> show all locks Process 86018 (syz-executor.1) thread 0xffff8000ffffaee8 (241075) shared rwlock vmmaplk r = 0 (0xfffffd807efff2f8) #0 witness_lock+0x4b0 stacktrace_save sys/sys/stacktrace.h:36 [inline] #0 witness_lock+0x4b0 sys/kern/subr_witness.c:1164 #1 rw_enter+0x446 sys/kern/kern_rwlock.c:311 #2 vm_map_lock_ln+0xda sys/uvm/uvm_map.c:5452 #3 uvm_map_pageable+0x120 sys/uvm/uvm_map.c:2463 #4 sys_mlock+0x180 sys/uvm/uvm_mmap.c:767 #5 syscall+0x4a1 mi_syscall sys/sys/syscall_mi.h:102 [inline] #5 syscall+0x4a1 sys/arch/amd64/amd64/trap.c:567 #6 Xsyscall+0x128 exclusive kernel_lock &kernel_lock r = 0 (0xffffffff82889918) #0 witness_lock+0x4b0 stacktrace_save sys/sys/stacktrace.h:36 [inline] #0 witness_lock+0x4b0 sys/kern/subr_witness.c:1164 #1 syscall+0x3fd mi_syscall sys/sys/syscall_mi.h:93 [inline] #1 syscall+0x3fd sys/arch/amd64/amd64/trap.c:567 #2 Xsyscall+0x128 ddb{1}> show malloc Type InUse MemUse HighUse Limit Requests Type Lim devbuf 9464 6330K 6330K 78643K 10556 0 pcb 13 8K 8K 78643K 13 0 rtable 105 3K 3K 78643K 189 0 ifaddr 39 10K 10K 78643K 39 0 counters 43 33K 33K 78643K 43 0 ioctlops 0 0K 2K 78643K 541 0 iov 0 0K 16K 78643K 40 0 mount 1 1K 1K 78643K 1 0 vnodes 1216 76K 76K 78643K 1222 0 UFS quota 1 32K 32K 78643K 1 0 UFS mount 5 36K 36K 78643K 5 0 shm 2 1K 5K 78643K 69 0 VM map 2 1K 1K 78643K 2 0 sem 12 1K 1K 78643K 5063 0 dirhash 12 2K 2K 78643K 12 0 ACPI 1824 197K 290K 78643K 13058 0 file desc 7 21K 33K 78643K 42076 0 proc 48 50K 83K 78643K 404 0 subproc 34 2K 2K 78643K 34 0 NFS srvsock 1 0K 0K 78643K 1 0 NFS daemon 1 16K 16K 78643K 1 0 in_multi 33 2K 2K 78643K 33 0 ether_multi 1 0K 0K 78643K 1 0 ISOFS mount 1 32K 32K 78643K 1 0 MSDOSFS mount 1 16K 16K 78643K 1 0 ttys 37 175K 175K 78643K 37 0 exec 0 0K 2K 78643K 326 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 548 61K 63K 78643K 90832 0 UVM aobj 131 4K 4K 78643K 133 0 memdesc 1 4K 4K 78643K 1 0 crypto data 1 1K 1K 78643K 1 0 NDP 5 0K 0K 78643K 9 0 temp 102 3965K 4029K 78643K 85961 0 kqueue 3 4K 9K 78643K 27 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 arp 64 6 0 0 1 0 1 1 0 8 0 plcache 128 20 0 0 1 0 1 1 0 8 0 rtpcb 96 23 0 21 1 0 1 1 0 8 0 rtentry 112 45 0 1 2 0 2 2 0 8 0 unpcb 120 6700 0 6692 1 0 1 1 0 8 0 syncache 272 4 0 4 1 1 0 1 0 8 0 tcpqe 32 220 0 220 1 1 0 1 0 8 0 tcpcb 592 66 0 58 3 2 1 2 0 8 0 ipq 40 1 0 1 1 1 0 1 0 8 0 ipqe 40 2 0 2 1 1 0 1 0 8 0 inpcb 296 249 0 242 1 0 1 1 0 8 0 nd6 48 6 0 0 1 0 1 1 0 8 0 kcovpl 48 2 0 0 1 0 1 1 0 8 0 art_heap8 4096 1 0 0 1 0 1 1 0 8 0 art_heap4 256 188 0 0 12 0 12 12 0 8 0 art_table 32 189 0 0 2 0 2 2 0 8 0 art_node 16 44 0 4 1 0 1 1 0 8 0 sysvmsgpl 40 11 0 0 1 0 1 1 0 8 0 semupl 112 2 0 2 1 1 0 1 0 8 0 semapl 112 5051 0 5041 1 0 1 1 0 8 0 shmpl 112 130 0 2 4 0 4 4 0 8 0 dirhash 1024 17 0 0 3 0 3 3 0 8 0 dino2pl 256 51975 0 50577 88 0 88 88 0 8 0 ffsino 272 51975 0 50577 94 0 94 94 0 8 0 nchpl 144 103372 0 101772 60 0 60 60 0 8 0 uvmvnodes 72 5926 0 0 108 0 108 108 0 8 0 vnodes 208 5926 0 0 312 0 312 312 0 8 0 namei 1024 215844 0 215844 2 1 1 1 0 8 1 percpumem 16 32 0 0 1 0 1 1 0 8 0 scxspl 192 290252 0 290252 12 11 1 7 0 8 1 plimitpl 152 33 0 24 1 0 1 1 0 8 0 sigapl 424 42264 0 42232 4 0 4 4 0 8 0 futexpl 56 252101 0 252101 1 0 1 1 0 8 1 knotepl 112 87 0 67 1 0 1 1 0 8 0 kqueuepl 152 41735 0 41729 1 0 1 1 0 8 0 pipepl 304 491 0 480 12 10 2 2 0 8 1 fdescpl 496 42248 0 42232 3 0 3 3 0 8 0 filepl 152 119557 0 119456 17 12 5 5 0 8 1 lockfpl 104 17682 0 17680 1 0 1 1 0 8 0 lockfspl 48 8832 0 8830 1 0 1 1 0 8 0 sessionpl 120 17 0 7 1 0 1 1 0 8 0 pgrppl 48 17 0 7 1 0 1 1 0 8 0 ucredpl 96 1041 0 1032 1 0 1 1 0 8 0 zombiepl 144 42232 0 42232 2 1 1 1 0 8 1 processpl 1008 42264 0 42232 5 0 5 5 0 8 0 procpl 632 86399 0 86359 4 0 4 4 0 8 0 sosppl 144 3 0 3 2 2 0 1 0 8 0 sockpl 400 7022 0 7005 14 11 3 3 0 8 1 mcl64k 65536 17 0 0 3 0 3 3 0 8 0 mcl16k 16384 17 0 0 3 0 3 3 0 8 0 mcl12k 12288 25 0 0 2 0 2 2 0 8 0 mcl9k 9216 41 0 0 2 0 2 2 0 8 0 mcl8k 8192 33 0 0 4 1 3 3 0 8 0 mcl4k 4096 22 0 0 3 0 3 3 0 8 0 mcl2k2 2112 17 0 0 2 0 2 2 0 8 0 mcl2k 2048 353 0 0 37 12 25 37 0 8 0 mtagpl 96 1 0 0 1 0 1 1 0 8 0 mbufpl 256 763 0 0 21 0 21 21 0 8 0 bufpl 280 52599 0 46353 447 0 447 447 0 8 0 anonpl 16 2624048 0 2545925 388 2 386 386 0 124 0 amapchunkpl 152 135560 0 132684 139 11 128 137 0 158 0 amappl16 192 76242 0 73735 137 11 126 131 0 8 0 amappl15 184 1 0 0 1 0 1 1 0 8 0 amappl14 176 28 0 20 1 0 1 1 0 8 0 amappl13 168 37 0 35 1 0 1 1 0 8 0 amappl12 160 14 0 8 1 0 1 1 0 8 0 amappl11 152 46 0 37 1 0 1 1 0 8 0 amappl10 144 20895 0 20890 1 0 1 1 0 8 0 amappl9 136 374 0 373 2 1 1 1 0 8 0 amappl8 128 42459 0 42411 2 0 2 2 0 8 0 amappl7 120 218 0 211 1 0 1 1 0 8 0 amappl6 112 20955 0 20945 1 0 1 1 0 8 0 amappl5 104 43361 0 43343 1 0 1 1 0 8 0 amappl4 96 2519 0 2492 1 0 1 1 0 8 0 amappl3 88 5181 0 5172 1 0 1 1 0 8 0 amappl2 80 297738 0 297676 2 0 2 2 0 8 0 amappl1 72 1278430 0 1277963 23 13 10 18 0 8 0 amappl 80 87075 0 86590 11 0 11 11 0 84 0 dma4096 4096 1 0 1 1 1 0 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 64 132 0 2 3 0 3 3 0 8 0 uaddrrnd 24 42248 0 42232 1 0 1 1 0 8 0 uaddrbest 32 2 0 0 1 0 1 1 0 8 0 uaddr 24 42248 0 42232 1 0 1 1 0 8 0 vmmpekpl 168 143700 0 143663 3 1 2 2 0 8 0 vmmpepl 168 5494854 0 5490617 312 120 192 277 0 357 5 vmsppl 368 42247 0 42232 2 0 2 2 0 8 0 pdppl 4096 84503 0 84464 6 0 6 6 0 8 1 pvpl 32 8630963 0 8549651 805 4 801 805 0 265 0 pmappl 232 42247 0 42232 2 1 1 2 0 8 0 extentpl 40 53 0 36 1 0 1 1 0 8 0 phpool 112 296 0 28 8 0 8 8 0 8 0 ddb{1}> machine ddbcpu 0 Stopped at x86_ipi_db+0x1a: addq $0x8,%rsp ddb{0}> trace x86_ipi_db(ffffffff826faff0) at x86_ipi_db+0x1a sys/arch/amd64/amd64/db_interface.c:352 x86_ipi_handler() at x86_ipi_handler+0xb7 sys/arch/amd64/amd64/ipi.c:106 Xresume_lapic_ipi() at Xresume_lapic_ipi+0x23 __sanitizer_cov_trace_pc() at __sanitizer_cov_trace_pc intr_handler(ffff8000212884e0,ffff80000065bd80) at intr_handler+0x5e sys/arch/amd64/amd64/intr.c:532 Xintr_ioapic_edge4_untramp() at Xintr_ioapic_edge4_untramp+0x19f __sanitizer_cov_trace_pc() at __sanitizer_cov_trace_pc+0x25 kd_curproc sys/dev/kcov.c:558 [inline] __sanitizer_cov_trace_pc() at __sanitizer_cov_trace_pc+0x25 sys/dev/kcov.c:143 __mp_lock(ffffffff82889710) at __mp_lock+0x133 __mp_lock_spin sys/kern/kern_lock.c:116 [inline] __mp_lock(ffffffff82889710) at __mp_lock+0x133 sys/kern/kern_lock.c:147 softintr_dispatch(0) at softintr_dispatch+0x4e sys/arch/amd64/amd64/softintr.c:90 Xsoftclock() at Xsoftclock+0x1f end of kernel end trace frame: 0xc000049e90, count: -10 ddb{0}> machine ddbcpu 1 Stopped at db_enter+0x18: addq $0x8,%rsp ddb{1}> trace db_enter() at db_enter+0x18 sys/arch/amd64/amd64/db_interface.c:398 witness_checkorder(fffffd8057f31a28,9,0) at witness_checkorder+0xf5a witness_debugger sys/kern/subr_witness.c:2490 [inline] witness_checkorder(fffffd8057f31a28,9,0) at witness_checkorder+0xf5a sys/kern/subr_witness.c:1087 rw_enter(fffffd8057f31a18,81) at rw_enter+0xd4 rrw_enter(fffffd8057f31a18,81) at rrw_enter+0x88 sys/kern/kern_rwlock.c:462 VOP_LOCK(fffffd806e618758,81) at VOP_LOCK+0x4b sys/kern/vfs_vops.c:603 vn_lock(fffffd806e618758,81) at vn_lock+0x6c sys/kern/vfs_vnops.c:575 uvn_io(fffffd806e61e0d8,ffff80002570e3f8,1,2,0) at uvn_io+0x2b5 sys/uvm/uvm_vnode.c:1196 uvn_get(fffffd806e61e0d8,0,ffff80002570e650,ffff80002570e5ec,0,5) at uvn_get+0x226 sys/uvm/uvm_vnode.c:1056 uvm_fault(fffffd807efff2e0,20000000,2,5) at uvm_fault+0x1197 sys/uvm/uvm_fault.c:1016 uvm_fault_wire(fffffd807efff2e0,20000000,20003000,5) at uvm_fault_wire+0x63 sys/uvm/uvm_fault.c:1285 uvm_map_pageable_wire(fffffd807efff2e0,fffffd80084e8850,fffffd80084e8c40,23d,ffffffff817c4f5e,0) at uvm_map_pageable_wire+0x30d sys/uvm/uvm_map.c:2367 sys_mlock(ffff8000ffffaee8,ffff80002570e838,ffff80002570e880) at sys_mlock+0x180 sys/uvm/uvm_mmap.c:767 syscall(ffff80002570e900) at syscall+0x4a1 mi_syscall sys/sys/syscall_mi.h:102 [inline] syscall(ffff80002570e900) at syscall+0x4a1 sys/arch/amd64/amd64/trap.c:567 Xsyscall() at Xsyscall+0x128 end of kernel end trace frame: 0x84056c38ac0, count: -14