syzbot


witness: userret: sysctl

Status: fixed on 2025/06/07 10:16
Reported-by: syzbot+a0c4668a7fbcd37404aa@syzkaller.appspotmail.com
Fix commit: d8a43137eb27 Add forgotten NET_UNLOCK_SHARED() in FILLINPTABLE().
First crash: 19d, last: 18d

Sample crash report:
witness: userret: returning with the following locks held:
shared rwlock netlock r = 0 (0xffffffff83874a10)
#0  witness_lock+0x5bb stacktrace_save sys/sys/stacktrace.h:37 [inline]
#0  witness_lock+0x5bb sys/kern/subr_witness.c:1160
#1  rw_do_enter_read+0x36e sys/kern/kern_rwlock.c:397
#2  sysctl_file+0x17e6 sys/kern/kern_sysctl.c:1769
#3  kern_sysctl+0x251 sys/kern/kern_sysctl.c:526
#4  sys_sysctl+0x3f2 sys/kern/kern_sysctl.c:-1
#5  syscall+0xbc6 mi_syscall sys/sys/syscall_mi.h:176 [inline]
#5  syscall+0xbc6 sys/arch/amd64/amd64/trap.c:579
#6  Xsyscall+0x128
panic: witness_warn
Stopped at      db_enter+0x25:  addq    $0x8,%rsp
    TID    PID    UID     PRFLAGS     PFLAGS  CPU  COMMAND
 123902  17890      0           0          0    1  syz-executor
*141253  18844     -1        0x10  0x4000000    0  syz-executor
db_enter() at db_enter+0x25 sys/arch/amd64/amd64/db_interface.c:438
panic(ffffffff8338bf48) at panic+0x1e5 sys/kern/subr_prf.c:198
witness_warn(2,0,ffffffff83344572) at witness_warn+0x850 witness_debugger sys/kern/subr_witness.c:2576 [inline]
witness_warn(2,0,ffffffff83344572) at witness_warn+0x850 sys/kern/subr_witness.c:1485
userret(ffff80002a297730) at userret+0x3a4 sys/kern/kern_sig.c:2227
syscall(ffff800031be8ff0) at syscall+0x9c0 mi_syscall_return sys/sys/syscall_mi.h:203 [inline]
syscall(ffff800031be8ff0) at syscall+0x9c0 sys/arch/amd64/amd64/trap.c:600
Xsyscall() at Xsyscall+0x128
end of kernel
end trace frame: 0xf4a7ff5e0d0, count: 9
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{0}> 
ddb{0}> set $lines = 0
ddb{0}> set $maxwidth = 0
ddb{0}> show panic
*cpu0: witness_warn
ddb{0}> trace
db_enter() at db_enter+0x25 sys/arch/amd64/amd64/db_interface.c:438
panic(ffffffff8338bf48) at panic+0x1e5 sys/kern/subr_prf.c:198
witness_warn(2,0,ffffffff83344572) at witness_warn+0x850 witness_debugger sys/kern/subr_witness.c:2576 [inline]
witness_warn(2,0,ffffffff83344572) at witness_warn+0x850 sys/kern/subr_witness.c:1485
userret(ffff80002a297730) at userret+0x3a4 sys/kern/kern_sig.c:2227
syscall(ffff800031be8ff0) at syscall+0x9c0 mi_syscall_return sys/sys/syscall_mi.h:203 [inline]
syscall(ffff800031be8ff0) at syscall+0x9c0 sys/arch/amd64/amd64/trap.c:600
Xsyscall() at Xsyscall+0x128
end of kernel
end trace frame: 0xf4a7ff5e0d0, count: -6
ddb{0}> show registers
rdi                                0
rsi                              0x1
rbp               0xffff800031be8d20
rbx               0xffffffff8382fdd7    cpu_info_full_primary+0x2dd7
rdx                                0
rcx               0xffff80002a297730
rax               0xffffffff8382eff0    cpu_info_full_primary+0x1ff0
r8                 0x101010101010101
r9                0x8080808080808080
r10               0x80834aced26c7964
r11               0x8d06f12c95ef7384
r12               0xffffffff8382fbd8    cpu_info_full_primary+0x2bd8
r13                                0
r14                                0
r15                              0x1
rip               0xffffffff82907a95    db_enter+0x25
cs                               0x8
rflags                         0x246
rsp               0xffff800031be8d10
ss                              0x10
db_enter+0x25:  addq    $0x8,%rsp
ddb{0}> show proc
PROC (syz-executor) tid=141253 pid=18844 tcnt=3 stat=onproc
    flags process=10<SUGID> proc=4000000<THREAD>
    runpri=36, usrpri=86, slppri=36, nice=20
    wchan=0x0, wmesg=, ps_single=0x0 scnt=0 ecnt=0
    forw=0xffffffffffffffff, list=0xffff80002a297210,0xffff80002a296030
    process=0xffff80003980c9d0 user=0xffff800031be4000, vmspace=0xfffffd806ef1b3c8
    estcpu=36, cpticks=4, pctcpu=0.0, user=0, sys=4, intr=0
ddb{0}> ps
   PID     TID   PPID    UID  S       FLAGS  WAIT          COMMAND
 17890  123902  76318      0  7           0                syz-executor
 17890  125655  76318      0  3   0x4000080  kqpoll        syz-executor
 24172  188892  58690      0  2           0                syz-executor
 75926  244377  64693      0  2           0                syz-executor
 75926   94827  64693      0  3   0x4000080  fsleep        syz-executor
 18844   89536  46241     -1  2        0x10                syz-executor
*18844  141253  46241     -1  7   0x4000010                syz-executor
 18844  417377  46241     -1  3   0x4000010  netlock       syz-executor
 50417   19011  86025      0  3        0x80  nanoslp       syz-executor
 50417  449734  86025      0  3   0x4000080  pipewr        syz-executor
 50417   15638  86025      0  3   0x4000080  fsleep        syz-executor
 47918  109077      0      0  3     0x14200  acct          acct
  2641   15989      0      0  3     0x14200  bored         sosplice
 76318  474500  80849      0  3        0x82  nanoslp       syz-executor
 69296  149342  80849      0  3        0x82  wait          syz-executor
 71801  248907  80849      0  3        0x82  nanoslp       syz-executor
 86025  228355  80849      0  2       0xc82                syz-executor
 64693  166329  80849      0  3        0x82  nanoslp       syz-executor
 58690  323793  80849      0  2         0x2                syz-executor
 46241   38562  80849      0  3        0x82  nanoslp       syz-executor
 46604  371669  80849      0  2         0x2                syz-executor
 80849  230487  63154      0  3        0x82  kqread        syz-executor
 63154  453753  28242      0  3    0x10008a  sigsusp       ksh
 28242  213386  63702      0  3        0x98  kqread        sshd-session
 63702  187514   4123      0  3        0x92  kqread        sshd-session
 24396  508045      1      0  3    0x100083  ttyin         getty
  4123  356854      1      0  3        0x88  kqread        sshd
 63124   34306  75346     74  3   0x1100092  bpf           pflogd
 75346   63371      1      0  3        0x80  sbwait        pflogd
 89559   22684  86476     73  3   0x1100090  kqread        syslogd
 86476   21952      1      0  3    0x100082  sbwait        syslogd
  6781  283166      1      0  3    0x100080  kqread        resolvd
 22977  202823   6673     77  3    0x100092  kqread        dhcpleased
 85454  214895   6673     77  3    0x100092  kqread        dhcpleased
  6673  471082      1      0  3        0x80  kqread        dhcpleased
 84079  166359      0      0  3     0x14200  bored         smr
 22581  427085      0      0  2     0x14200                zerothread
  8738  385588      0      0  3     0x14200  aiodoned      aiodoned
 18464  424292      0      0  3     0x14200  syncer        update
 36458  516115      0      0  3     0x14200  cleaner       cleaner
 45315  210400      0      0  3     0x14200  reaper        reaper
 23967  212962      0      0  3     0x14200  pgdaemon      pagedaemon
 97939  212823      0      0  3     0x14200  bored         viomb
 82795  189424      0      0  3  0x40014200  acpi0         acpi0
 40815  229027      0      0  3  0x40014200                idle1
 21002  128392      0      0  3     0x14200  bored         softnet3
  4896  215203      0      0  3     0x14200  bored         softnet2
 23600  329379      0      0  3     0x14200  bored         softnet1
 56584  414078      0      0  3     0x14200  bored         softnet0
 37159   83162      0      0  3     0x14200  bored         systqmp
 26723   32489      0      0  3     0x14200  bored         systq
 11588  379876      0      0  3     0x14200  netlock       softclockmp
 94686   13340      0      0  2  0x40014200                softclock
 45625   41555      0      0  3  0x40014200                idle0
     1  212727      0      0  3        0x82  wait          init
     0       0     -1      0  3     0x10200  scheduler     swapper
ddb{0}> show all locks
Process 18844 (syz-executor) thread 0xffff80002a297730 (141253)
shared rwlock netlock r = 0 (0xffffffff83874a10)
#0  witness_lock+0x5bb stacktrace_save sys/sys/stacktrace.h:37 [inline]
#0  witness_lock+0x5bb sys/kern/subr_witness.c:1160
#1  rw_do_enter_read+0x36e sys/kern/kern_rwlock.c:397
#2  sysctl_file+0x17e6 sys/kern/kern_sysctl.c:1769
#3  kern_sysctl+0x251 sys/kern/kern_sysctl.c:526
#4  sys_sysctl+0x3f2 sys/kern/kern_sysctl.c:-1
#5  syscall+0xbc6 mi_syscall sys/sys/syscall_mi.h:176 [inline]
#5  syscall+0xbc6 sys/arch/amd64/amd64/trap.c:579
#6  Xsyscall+0x128
Process 11588 (softclockmp) thread 0xffff8000ffffe290 (379876)
shared rwlock timeout r = 0 (0xffffffff8384f5e8)
#0  witness_lock+0x5bb stacktrace_save sys/sys/stacktrace.h:37 [inline]
#0  witness_lock+0x5bb sys/kern/subr_witness.c:1160
#1  timeout_run+0x115 sys/kern/kern_timeout.c:690
#2  softclock_thread_run+0xec sys/kern/kern_timeout.c:838
#3  softclock_thread_mp+0x8f sys/kern/kern_timeout.c:873
#4  proc_trampoline+0x10
ddb{0}> show malloc
           Type InUse  MemUse  HighUse   Limit  Requests Type Lim
         devbuf 10227  11367K   11376K 166960K     11987        0
            pcb    18     12K      12K 166960K        61        0
         rtable   168      6K       7K 166960K       393        0
             pf    36     18K      21K 166960K        81        0
         ifaddr    32      4K       7K 166960K        60        0
        ifgroup    55      2K       2K 166960K        90        0
         sysctl     3      1K       9K 166960K         9        0
       counters    68     36K      37K 166960K        96        0
       ioctlops     0      0K       4K 166960K      1538        0
            iov     0      0K      12K 166960K        16        0
          mount     1      1K       1K 166960K         1        0
            log     0      0K       0K 166960K         4        0
         vnodes  1435     90K      91K 166960K      1757        0
      UFS quota     1     32K      32K 166960K         1        0
      UFS mount     5     36K      36K 166960K         5        0
            shm     2      1K       5K 166960K         5        0
         VM map     2      1K       1K 166960K         2        0
            sem    10      0K       0K 166960K        13        0
        dirhash    12      2K       2K 166960K        15        0
           ACPI  1692    195K     286K 166960K     12470        0
      file desc    18     65K     106K 166960K       469        0
          sigio     0      0K       0K 166960K         5        0
           proc    72     91K     128K 166960K       579        0
        subproc    72      4K       4K 166960K        72        0
    NFS srvsock     1      0K       0K 166960K         1        0
     NFS daemon     1     16K      16K 166960K         1        0
    ip_moptions     0      0K       0K 166960K        33        0
       in_multi    64      4K       7K 166960K       119        0
    ether_multi     1      0K       0K 166960K         5        0
            mrt     2      0K       0K 166960K         4        0
    ISOFS mount     1     32K      32K 166960K         1        0
  MSDOSFS mount     1     16K      16K 166960K         1        0
           ttys    97    440K     440K 166960K        97        0
           exec     0      0K       1K 166960K       399        0
   fusefs mount     1     32K      32K 166960K         1        0
            tdb     3      0K       0K 166960K         3        0
        VM swap     8     62K      64K 166960K        10        0
       UVM amap   247    160K     169K 166960K      5923        0
       UVM aobj    10      2K       2K 166960K        10        0
     pinsyscall    43     86K     101K 166960K      1540        0
        memdesc     1      4K       4K 166960K         1        0
    crypto data     1      1K       1K 166960K         1        0
    ip6_options     0      0K       0K 166960K        13        0
            NDP    12      0K       1K 166960K        41        0
           temp    76   8696K    8768K 166960K     17317        0
         kqueue    13     20K      30K 166960K        77        0
      SYN cache     2     16K      16K 166960K         2        0
ddb{0}> show all pools
Name      Size Requests Fail Releases Pgreq Pgrel Npage Hiwat Minpg Maxpg Idle
plcache    128       26    0        0     1     0     1     1     0     8    0
rtpcb      120       53    0       48     1     0     1     1     0     8    0
rtentry    176      120    0       47     5     0     5     5     0     8    0
unpcb      144      519    0      501     6     0     6     6     0     8    5
syncache   336        3    0        3     1     1     0     1     0     8    0
tcpcb      808       72    0       66     1     0     1     1     0     8    0
arp        128       21    0        9     1     0     1     1     0     8    0
inpcb      328      309    0      298     4     0     4     4     0     8    2
nd6        144       26    0       10     1     0     1     1     0     8    0
pkpcb       40        4    0        4     1     0     1     1     0     8    1
kcovpl      48        8    0        0     1     0     1     1     0     8    0
mppekey    1024       1    0        1     1     0     1     1     0     8    1
ppxss      1192       9    0        9     1     0     1     1     0     8    1
pppxif     1504       2    0        2     1     0     1     1     0     8    1
pfstscr     40        2    0        1     1     0     1     1     0     8    0
pffrag     232        2    0        0     1     0     1     1     0   482    0
pffrnode    88        2    0        0     1     0     1     1     0     8    0
pffrent     40        4    0        2     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
pfrktable  1344       1    0        1     1     0     1     1     0     8    1
pftag       88        1    0        1     1     0     1     1     0     8    1
pfstitem    24       42    0        0     1     0     1     1     0     8    0
pfstkey    128       44    0        2     2     0     2     2     0     8    0
pfstate    384       42    0        1     5     0     5     5     0     8    0
pfrule     1344      36    0       27     2     1     1     2     0     8    0
art_heap8  4096       1    0        0     1     0     1     1     0     8    0
art_heap4  256      475    0      162    29     2    27    29     0     8    3
art_table   32      476    0      162     4     0     4     4     0     8    0
art_node    16      119    0       54     1     0     1     1     0     8    0
sysvmsgpl   40       39    0       35     1     0     1     1     0     8    0
semupl     112        1    0        1     1     0     1     1     0     8    1
semapl     112       10    0        2     1     0     1     1     0     8    0
shmpl      112        7    0        0     1     0     1     1     0     8    0
dirhash    1024      19    0        2     3     0     3     3     0     8    0
dino2pl    256     2172    0      666    95     0    95    95     0     8    0
ffsino     288     2172    0      666   109     0   109   109     0     8    0
nchpl      144     2802    0     1114    64     0    64    64     0     8    0
uvmvnodes   80     2542    0        0    52     0    52    52     0     8    0
vnodes     216     2542    0        0   142     0   142   142     0     8    0
namei      1024    8985    0     8985     2     1     1     2     0     8    1
percpumem   16       63    0       14     1     0     1     1     0     8    0
kstatmem   264       50    0       22     3     0     3     3     0     8    1
scsiplug    72        2    0        2     1     0     1     1     0     8    1
scxspl     216     9067    0     9067    10     2     8     8     1     8    8
plimitpl   152       59    0       42     1     0     1     1     0     8    0
sigapl     424      762    0      710     7     1     6     7     0     8    0
knotepl    120      522    0        0    16     0    16    16     0     8    0
kqueuepl   224      173    0      163     5     4     1     5     0     8    0
pipepl     336      196    0      168     8     0     8     8     0     8    5
fdescpl    520      742    0      710     3     0     3     3     0     8    0
filepl     160     3872    0     3648    16     0    16    16     0     8    5
lockfpl    104       94    0       92     1     0     1     1     0     8    0
lockfspl    48       44    0       42     1     0     1     1     0     8    0
sessionpl  144       22    0       13     1     0     1     1     0     8    0
pgrppl      48       33    0       16     1     0     1     1     0     8    0
ucredpl    104      329    0      313     1     0     1     1     0     8    0
zombiepl   144      713    0      710     1     0     1     1     0     8    0
processpl  1240     762    0      710     5     0     5     5     0     8    0
procpl     656     1325    0     1267     6     0     6     6     0     8    0
srpgc       96        6    0        6     1     0     1     1     0     8    1
sosppl     168        1    0        1     1     0     1     1     0     8    1
sockpl     728      902    0      866    21     9    12    16     0     8    8
mcl64k     65536      4    0        0     1     0     1     1     0     8    0
mcl16k     16384      1    0        0     1     0     1     1     0     8    0
mcl12k     12288      1    0        0     1     0     1     1     0     8    0
mcl8k      8192       3    0        0     1     0     1     1     0     8    0
mcl4k      4096     107    0        0    14     0    14    14     0     8    0
mcl2k      2048      78    0        0    10     0    10    10     0     8    0
mtagpl      96      110    0        0     3     0     3     3     0     8    0
mbufpl     256     1244    0        0    78     0    78    78     0     8    0
bufpl      280     2932    0      126   201     0   201   201     0     8    0
anonpl      32     7630    0        0    62     0    62    62     0   246    0
amapchunkpl 152   18344    0    17831    27     0    27    27     0   158    6
amappl16   200     2613    0     2581    18     3    15    15     0     8   12
amappl15   192        5    0        5     1     1     0     1     0     8    0
amappl14   184      114    0      102     1     0     1     1     0     8    0
amappl13   176        9    0        9     1     1     0     1     0     8    0
amappl12   168     1375    0     1344     4     1     3     3     0     8    0
amappl11   160       53    0       39     1     0     1     1     0     8    0
amappl10   152       50    0       50     1     1     0     1     0     8    0
amappl9    144      251    0      251     1     1     0     1     0     8    0
amappl8    136       21    0       19     1     0     1     1     0     8    0
amappl7    128      115    0      103     1     0     1     1     0     8    0
amappl6    120      176    0      173     1     0     1     1     0     8    0
amappl5    112      124    0      113     1     0     1     1     0     8    0
amappl4    104      309    0      289     1     0     1     1     0     8    0
amappl3     96     3463    0     3345     4     0     4     4     0     8    0
amappl2     88      638    0      576     2     0     2     2     0     8    0
amappl1     80     9416    0     8807    15     1    14    15     0     8    1
amappl      88     5209    0     5037     5     0     5     5     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        9    0        0     1     0     1     1     0     8    0
uaddrrnd    24      742    0      710     1     0     1     1     0     8    0
uaddrbest   32        2    0        0     1     0     1     1     0     8    0
uaddr       24      742    0      710     1     0     1     1     0     8    0
vmmpekpl   168     7760    0     7718     3     0     3     3     0     8    0
vmmpepl    168    52618    0    50578   101     0   101   101     0   357    9
vmsppl     480      741    0      710     5     1     4     5     0     8    0
rwobjpl     72    18885    0    15384    66     0    66    66     0     8    2
pdppl      4096    1491    0     1420    95    24    71    83     0     8    0
pvpl        32    15196    0        0   123     0   123   123     0   265    0
pmappl     256      741    0      710     3     0     3     3     0     8    0
extentpl    40       45    0       27     1     0     1     1     0     8    0
phpool     112      456    0       30    13     0    13    13     0     8    0
ddb{0}> machine ddbcpu 0
Invalid cpu 0
ddb{0}> trace
db_enter() at db_enter+0x25 sys/arch/amd64/amd64/db_interface.c:438
panic(ffffffff8338bf48) at panic+0x1e5 sys/kern/subr_prf.c:198
witness_warn(2,0,ffffffff83344572) at witness_warn+0x850 witness_debugger sys/kern/subr_witness.c:2576 [inline]
witness_warn(2,0,ffffffff83344572) at witness_warn+0x850 sys/kern/subr_witness.c:1485
userret(ffff80002a297730) at userret+0x3a4 sys/kern/kern_sig.c:2227
syscall(ffff800031be8ff0) at syscall+0x9c0 mi_syscall_return sys/sys/syscall_mi.h:203 [inline]
syscall(ffff800031be8ff0) at syscall+0x9c0 sys/arch/amd64/amd64/trap.c:600
Xsyscall() at Xsyscall+0x128
end of kernel
end trace frame: 0xf4a7ff5e0d0, count: -6
ddb{0}> machine ddbcpu 1

Crashes (4):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2025/06/06 17:08 openbsd 402b23ce0ef8 3d899f2c .config console log report [disk image] [bsd.gdb] [kernel image] ci-openbsd-multicore witness: userret: sysctl
2025/06/06 09:58 openbsd 402b23ce0ef8 3d899f2c .config console log report [disk image] [bsd.gdb] [kernel image] ci-openbsd-setuid witness: userret: sysctl
2025/06/05 21:01 openbsd c875838447ad 6b6b5f21 .config console log report [disk image] [bsd.gdb] [kernel image] ci-openbsd-setuid witness: userret: sysctl
2025/06/05 15:47 openbsd c875838447ad 6b6b5f21 .config console log report [disk image] [bsd.gdb] [kernel image] ci-openbsd-setuid witness: userret: sysctl
* Struck through repros no longer work on HEAD.