aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Lindqvist <anton@basename.se>2020-10-27 11:31:37 +0100
committerDmitry Vyukov <dvyukov@google.com>2020-10-27 13:28:50 +0100
commit353b1a5cf9686f6fc17c4d35086ae6e004879a53 (patch)
tree677791a75d2721d1b13adce7e8ff257c00ac2942
parent94942294277bf7550b12322d282159551521258b (diff)
pkg/report: suppress witness vnode lock order reversal on OpenBSD
These reports are not that helpful and are rarely a problem as each vnode has a unique lock. Reports from witness regarding lock order reversal between two vnode locks are already suppressed by the kernel, see RWL_IS_VNODE in the rwlock(9) manual. While here, update `testdata/openbsd/report/10` as this report was generated before I prefixed all output from witness.
-rw-r--r--pkg/report/openbsd.go1
-rw-r--r--pkg/report/testdata/openbsd/report/103
-rw-r--r--pkg/report/testdata/openbsd/report/33293
3 files changed, 296 insertions, 1 deletions
diff --git a/pkg/report/openbsd.go b/pkg/report/openbsd.go
index 999e50d08..30a3d2a4c 100644
--- a/pkg/report/openbsd.go
+++ b/pkg/report/openbsd.go
@@ -20,6 +20,7 @@ func ctorOpenbsd(cfg *config) (Reporter, []string, error) {
}
suppressions := []string{
"panic: fifo_badop called",
+ "witness: lock order reversal:\\n(.*\\n)*.*[0-9stnd]+ 0x[0-9a-f]+ inode",
}
return ctx, suppressions, nil
}
diff --git a/pkg/report/testdata/openbsd/report/10 b/pkg/report/testdata/openbsd/report/10
index b12b051e8..0cb76902e 100644
--- a/pkg/report/testdata/openbsd/report/10
+++ b/pkg/report/testdata/openbsd/report/10
@@ -1,6 +1,7 @@
TITLE: witness: reversal: vmmaplk inode
+SUPPRESSED: Y
-lock order reversal:
+witness: lock order reversal:
1st 0xfffffd806e935890 vmmaplk (&map->lock) @ /syzkaller/managers/setuid/kernel/sys/uvm/uvm_fault.c:1442
2nd 0xfffffd806e099f88 inode (&ip->i_lock) @ /syzkaller/managers/setuid/kernel/sys/ufs/ufs/ufs_vnops.c:1547
diff --git a/pkg/report/testdata/openbsd/report/33 b/pkg/report/testdata/openbsd/report/33
new file mode 100644
index 000000000..18ca06e94
--- /dev/null
+++ b/pkg/report/testdata/openbsd/report/33
@@ -0,0 +1,293 @@
+TITLE: witness: reversal: inode netlock
+SUPPRESSED: Y
+
+Warning: Permanently added '10.128.1.10' (ECDSA) to the list of known hosts.
+executing program
+witness: lock order reversal:
+ 1st 0xfffffd806d95cb48 inode (&ip->i_lock)
+ 2nd 0xffffffff8277e670 netlock (netlock)
+lock order "&ip->i_lock"(rrwlock) -> "netlock"(rwlock) first seen at:
+#0 witness_checkorder+0x65e
+#1 rw_enter_write+0x5b
+#2 uvn_get+0xeb
+#3 uvm_fault+0xa41
+#4 kpageflttrap+0x202
+#5 kerntrap+0xef
+#6 alltraps_kern_meltdown+0x7b
+#7 copyin+0x53
+#8 sys_connect+0x9b
+#9 syscall+0x4a1
+#10 Xsyscall+0x128
+lock order "netlock"(rwlock) -> "&ip->i_lock"(rrwlock) first seen at:
+#0 witness_checkorder+0x65e
+#1 rw_enter+0xd4
+#2 rrw_enter+0x88
+#3 VOP_LOCK+0x4b
+#4 vn_lock+0x6c
+#5 vget+0x1c6
+#6 ktrwriteraw+0x138
+#7 ktrstruct+0x169
+#8 sys_connect+0x246
+#9 syscall+0x4a1
+#10 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
+witness_checkorder(fffffd806d95cb48,9,0) at witness_checkorder+0xf5a
+rw_enter(fffffd806d95cb38,1) at rw_enter+0xd4
+rrw_enter(fffffd806d95cb38,1) at rrw_enter+0x88
+VOP_LOCK(fffffd806d9479e0,2001) at VOP_LOCK+0x4b
+vn_lock(fffffd806d9479e0,2001) at vn_lock+0x6c
+vget(fffffd806d9479e0,2001) at vget+0x1c6
+ktrwriteraw(ffff8000ffff62a0,fffffd806d9479e0,fffffd807f7b7a20,ffff800021256fb0,ffff800021256f90) at ktrwriteraw+0x138
+ktrstruct(ffff8000ffff62a0,ffffffff823afafa,fffffd806f685020,10) at ktrstruct+0x169
+sys_connect(ffff8000ffff62a0,ffff8000212570f8,ffff800021257140) at sys_connect+0x246
+syscall(ffff8000212571c0) at syscall+0x4a1
+Xsyscall() at Xsyscall+0x128
+end of kernel
+end trace frame: 0x7f7fffff7700, count: -12
+ddb{1}> show registers
+rdi 0x3
+rsi 0xffffffff82748230 __sancov_gen_cov_switch_values.129
+rbp 0xffff800021256bc0
+rbx 0x3
+rdx 0x8b
+rcx 0x3
+rax 0x1
+r8 0xffffffff81e34c43 witness_checkorder+0xf33
+r9 0x5
+r10 0x4c8e2b2814ec0ddb
+r11 0xa2a1f000558e67b5
+r12 0xffffffff8284c2f0 w_lodata+0x4f730
+r13 0
+r14 0xffffffff8284c240 w_lodata+0x4f680
+r15 0xfffffd8002c9b500
+rip 0xffffffff82243a18 db_enter+0x18
+cs 0x8
+rflags 0x246
+rsp 0xffff800021256bb0
+ss 0x10
+db_enter+0x18: addq $0x8,%rsp
+ddb{1}> show proc
+PROC (syz-executor1584) pid=302653 stat=onproc
+ flags process=2<EXEC,8ORPHAN> proc=1<INKTR>
+ pri=17, usrpri=52, nice=20
+ forw=0xffffffffffffffff, list=0xffff8000ffff67c0,0xffffffff828e9418
+ process=0xffff8000212375b0 user=0xffff800021252000, vmspace=0xfffffd806e93f8a8
+ estcpu=2, cpticks=0, pctcpu=0.0
+ user=0, sys=0, intr=0
+ddb{1}> ps
+ PID TID PPID UID S FLAGS WAIT COMMAND
+*51336 302653 84077 0 7 0x3 syz-executor1584
+ 84077 52317 99949 0 3 0x10008a pause ksh
+ 99949 122278 17718 0 3 0x92 select sshd
+ 94583 294790 1 0 3 0x100083 ttyin getty
+ 17718 144098 1 0 3 0x80 select sshd
+ 3821 78474 93020 74 3 0x100092 bpf pflogd
+ 93020 357117 1 0 3 0x80 netio pflogd
+ 24669 81746 7856 73 3 0x100090 kqread syslogd
+ 7856 467612 1 0 3 0x100082 netio syslogd
+ 22732 468064 1 77 3 0x100090 poll dhclient
+ 98556 158448 1 0 3 0x80 poll dhclient
+ 73584 90685 0 0 3 0x14200 bored smr
+ 50517 29306 0 0 3 0x14200 pgzero zerothread
+ 12470 346654 0 0 3 0x14200 aiodoned aiodoned
+ 71962 341864 0 0 3 0x14200 syncer update
+ 76674 41497 0 0 3 0x14200 cleaner cleaner
+ 58511 296259 0 0 3 0x14200 reaper reaper
+ 35112 351548 0 0 3 0x14200 pgdaemon pagedaemon
+ 47776 416066 0 0 3 0x14200 bored crynlk
+ 5296 120071 0 0 3 0x14200 bored crypto
+ 8780 503052 0 0 3 0x14200 bored viomb
+ 44738 73602 0 0 3 0x40014200 acpi0 acpi0
+ 24823 515200 0 0 3 0x40014200 idle1
+ 79885 424571 0 0 3 0x14200 bored softnet
+ 28507 106394 0 0 3 0x14200 bored systqmp
+ 75046 17946 0 0 3 0x14200 bored systq
+ 82731 522933 0 0 3 0x40014200 bored softclock
+ 70734 56280 0 0 7 0x40014200 idle0
+ 1 111404 0 0 3 0x82 wait init
+ 0 0 -1 0 3 0x10200 scheduler swapper
+ddb{1}> show all locks
+Process 51336 (syz-executor1584) thread 0xffff8000ffff62a0 (302653)
+exclusive rwlock netlock r = 0 (0xffffffff8277e670)
+#0 witness_lock+0x4b0
+#1 uvn_io+0x31d
+#2 uvn_get+0x473
+#3 uvm_fault+0xa41
+#4 kpageflttrap+0x202
+#5 kerntrap+0xef
+#6 alltraps_kern_meltdown+0x7b
+#7 copyin+0x53
+#8 sys_connect+0x9b
+#9 syscall+0x4a1
+#10 Xsyscall+0x128
+exclusive kernel_lock &kernel_lock r = 1 (0xffffffff828cea78)
+#0 witness_lock+0x4b0
+#1 syscall+0x3fd
+#2 Xsyscall+0x128
+ddb{1}> show malloc
+ Type InUse MemUse HighUse Limit Requests Type Lim
+ devbuf 9474 6410K 6411K 78643K 10565 0
+ pcb 13 8K 8K 78643K 15 0
+ rtable 61 2K 2K 78643K 127 0
+ ifaddr 29 8K 8K 78643K 30 0
+ counters 39 33K 33K 78643K 39 0
+ ioctlops 0 0K 4K 78643K 1467 0
+ mount 1 1K 1K 78643K 1 0
+ vnodes 1183 74K 75K 78643K 1188 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 1825 197K 290K 78643K 13109 0
+ file desc 1 0K 0K 78643K 1 0
+ proc 59 63K 71K 78643K 367 0
+ NFS srvsock 1 0K 0K 78643K 1 0
+ NFS daemon 1 16K 16K 78643K 1 0
+ in_multi 11 0K 0K 78643K 11 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 19 95K 95K 78643K 19 0
+ exec 0 0K 2K 78643K 302 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 37 2K 2K 78643K 594 0
+ UVM aobj 3 2K 2K 78643K 3 0
+ memdesc 1 4K 4K 78643K 1 0
+ crypto data 1 1K 1K 78643K 1 0
+ NDP 4 0K 0K 78643K 4 0
+ temp 23 3949K 4013K 78643K 1690 0
+ kqueue 2 2K 2K 78643K 2 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 2 0 0 1 0 1 1 0 8 0
+plcache 128 20 0 0 1 0 1 1 0 8 0
+rtpcb 120 15 0 13 1 0 1 1 0 8 0
+rtentry 112 23 0 1 1 0 1 1 0 8 0
+unpcb 120 29 0 19 1 0 1 1 0 8 0
+syncache 296 5 0 5 2 1 1 1 0 8 1
+tcpcb 736 8 0 5 1 0 1 1 0 8 0
+inpcb 296 30 0 23 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 8 0 0 1 0 1 1 0 8 0
+pfstkey 112 8 0 0 1 0 1 1 0 8 0
+pfstate 328 8 0 0 1 0 1 1 0 8 0
+pfrule 1360 21 0 15 2 0 2 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 1399 0 16 87 0 87 87 0 8 0
+ffsino 272 1399 0 16 93 0 93 93 0 8 0
+nchpl 144 1573 0 33 59 1 58 58 0 8 0
+uvmvnodes 72 1409 0 0 26 0 26 26 0 8 0
+vnodes 208 1409 0 0 75 0 75 75 0 8 0
+namei 1024 3783 0 3783 2 1 1 1 0 8 1
+percpumem 16 30 0 0 1 0 1 1 0 8 0
+scxspl 216 3297 0 3297 2 1 1 2 0 8 1
+plimitpl 152 14 0 8 1 0 1 1 0 8 0
+sigapl 424 221 0 192 4 0 4 4 0 8 0
+knotepl 112 5 0 0 1 0 1 1 0 8 0
+kqueuepl 152 1 0 0 1 0 1 1 0 8 0
+pipepl 304 64 0 60 2 1 1 1 0 8 0
+fdescpl 496 205 0 192 3 0 3 3 0 8 0
+filepl 152 960 0 909 2 0 2 2 0 8 0
+lockfpl 104 5 0 4 1 0 1 1 0 8 0
+lockfspl 48 3 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 62 0 53 1 0 1 1 0 8 0
+zombiepl 144 192 0 192 2 1 1 1 0 8 1
+processpl 1056 221 0 192 3 0 3 3 0 8 0
+procpl 656 221 0 192 3 0 3 3 0 8 0
+sockpl 400 74 0 55 2 0 2 2 0 8 0
+mcl4k 4096 2 0 0 1 0 1 1 0 8 0
+mcl2k 2048 67 0 0 9 0 9 9 0 8 0
+mtagpl 96 1 0 0 1 0 1 1 0 8 0
+mbufpl 256 87 0 0 6 0 6 6 0 8 0
+bufpl 280 1934 0 112 131 0 131 131 0 8 0
+anonpl 16 19596 0 18363 8 2 6 7 0 124 1
+amapchunkpl 152 527 0 490 3 1 2 3 0 158 0
+amappl16 192 80 0 76 1 0 1 1 0 8 0
+amappl15 184 1 0 0 1 0 1 1 0 8 0
+amappl14 176 22 0 19 1 0 1 1 0 8 0
+amappl13 168 14 0 13 2 1 1 1 0 8 0
+amappl12 160 5 0 5 1 1 0 1 0 8 0
+amappl11 152 47 0 32 1 0 1 1 0 8 0
+amappl10 144 10 0 7 1 0 1 1 0 8 0
+amappl9 136 197 0 197 2 1 1 1 0 8 1
+amappl8 128 62 0 61 1 0 1 1 0 8 0
+amappl7 120 211 0 210 1 0 1 1 0 8 0
+amappl6 112 57 0 50 1 0 1 1 0 8 0
+amappl5 104 357 0 340 1 0 1 1 0 8 0
+amappl4 96 283 0 258 1 0 1 1 0 8 0
+amappl3 88 104 0 97 1 0 1 1 0 8 0
+amappl2 80 854 0 802 3 1 2 2 0 8 0
+amappl1 72 14320 0 13898 15 5 10 15 0 8 0
+amappl 80 403 0 383 1 0 1 1 0 84 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 64 2 0 0 1 0 1 1 0 8 0
+uaddrrnd 24 205 0 192 1 0 1 1 0 8 0
+uaddrbest 32 2 0 0 1 0 1 1 0 8 0
+uaddr 24 205 0 192 1 0 1 1 0 8 0
+vmmpekpl 168 5583 0 5565 1 0 1 1 0 8 0
+vmmpepl 168 29906 0 29079 48 8 40 48 0 357 2
+vmsppl 368 204 0 192 2 0 2 2 0 8 0
+pdppl 4096 417 0 384 47 14 33 39 0 8 0
+pvpl 32 80559 0 77564 29 1 28 28 0 265 1
+pmappl 232 204 0 192 1 0 1 1 0 8 0
+extentpl 40 57 0 39 1 0 1 1 0 8 0
+phpool 112 266 0 17 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(ffffffff8272eff0) at x86_ipi_db+0x1a
+x86_ipi_handler() at x86_ipi_handler+0xb7
+Xresume_lapic_ipi() at Xresume_lapic_ipi+0x23
+__mp_lock(ffffffff828ce870) at __mp_lock+0x122
+intr_handler(ffff80002117ed20,ffff80000065a300) at intr_handler+0x5e
+Xintr_ioapic_edge4_untramp() at Xintr_ioapic_edge4_untramp+0x19f
+__mp_lock(ffffffff828ce870) at __mp_lock+0x122
+softintr_dispatch(0) at softintr_dispatch+0x4e
+Xsoftclock() at Xsoftclock+0x1f
+acpicpu_idle() at acpicpu_idle+0x2eb
+sched_idle(ffffffff8272eff0) at sched_idle+0x417
+end trace frame: 0x0, count: -11
+ddb{0}> machine ddbcpu 1
+Stopped at db_enter+0x18: addq $0x8,%rsp
+ddb{1}> trace
+db_enter() at db_enter+0x18
+witness_checkorder(fffffd806d95cb48,9,0) at witness_checkorder+0xf5a
+rw_enter(fffffd806d95cb38,1) at rw_enter+0xd4
+rrw_enter(fffffd806d95cb38,1) at rrw_enter+0x88
+VOP_LOCK(fffffd806d9479e0,2001) at VOP_LOCK+0x4b
+vn_lock(fffffd806d9479e0,2001) at vn_lock+0x6c
+vget(fffffd806d9479e0,2001) at vget+0x1c6
+ktrwriteraw(ffff8000ffff62a0,fffffd806d9479e0,fffffd807f7b7a20,ffff800021256fb0,ffff800021256f90) at ktrwriteraw+0x138
+ktrstruct(ffff8000ffff62a0,ffffffff823afafa,fffffd806f685020,10) at ktrstruct+0x169
+sys_connect(ffff8000ffff62a0,ffff8000212570f8,ffff800021257140) at sys_connect+0x246
+syscall(ffff8000212571c0) at syscall+0x4a1
+Xsyscall() at Xsyscall+0x128
+end of kernel
+end trace frame: 0x7f7fffff7700, count: -12
+ddb{1}>