Anyone wants to fix vtnet locking with IPv6?

From: Bjoern A. Zeeb <bzeeb-lists_at_lists.zabbadoz.net>
Date: Thu, 04 Dec 2025 23:54:11 UTC
Those two come up almost every time I bring IPv6 up inside a bhyve VM.
The initial locking with that sleep mtx even twice.

Invoking IPv6 network device address event may sleep with the following non-sleepable locks held:
exclusive sleep mutex vtnet0-rx0 (vtnet0-rx0) r = 0 (0xfffff800018f4d80) locked @ /usr/sys/dev/virtio/network/if_vtnet.c:2241
stack backtrace: 
#0 0xffffffff80c0f9dc at witness_debugger+0x6c
#1 0xffffffff80c10bf0 at witness_warn+0x430 
#2 0xffffffff80dd78a7 at in6_update_ifa+0xc97
#3 0xffffffff80e05416 at in6_ifadd+0x316 
#4 0xffffffff80e019b3 at nd6_ra_input+0x10a3 
#5 0xffffffff80dd1556 at icmp6_input+0x5b6
#6 0xffffffff80debfa8 at ip6_input+0xc98 
#7 0xffffffff80d01e14 at netisr_dispatch_src+0xb4 
#8 0xffffffff80ce3eba at ether_demux+0x16a 
#9 0xffffffff80ce555e at ether_nh_input+0x3ce
#10 0xffffffff80d01e14 at netisr_dispatch_src+0xb4
#11 0xffffffff80ce4315 at ether_input+0xd5
#12 0xffffffff809b189e at vtnet_rxq_eof+0x7ce
#13 0xffffffff809b101c at vtnet_rx_vq_process+0x9c
#14 0xffffffff80b4bc56 at ithread_loop+0x266
#15 0xffffffff80b47f32 at fork_exit+0x82
#16 0xffffffff810c42ce at fork_trampoline+0xe
lock order reversal: (sleepable after non-sleepable)
  1st 0xfffff800018f4d80 vtnet0-rx0 (vtnet0-rx0, sleep mutex) @ /usr/sys/dev/virtio/network/if_vtnet.c:2241
  2nd 0xffffffff81eee4c0 in6_multi_sx (in6_multi_sx, sx) @ /usr/sys/netinet6/in6_mcast.c:1216
lock order vtnet0-rx0 -> in6_multi_sx attempted at:
#0 0xffffffff80c0f5b1 at witness_checkorder+0xbe1
#1 0xffffffff80ba2ed0 at _sx_xlock+0x60
#2 0xffffffff80de0311 at in6_joingroup+0x31
#3 0xffffffff80dd7c6a at in6_update_ifa+0x105a
#4 0xffffffff80e05416 at in6_ifadd+0x316
#5 0xffffffff80e019b3 at nd6_ra_input+0x10a3
#6 0xffffffff80dd1556 at icmp6_input+0x5b6
#7 0xffffffff80debfa8 at ip6_input+0xc98
#8 0xffffffff80d01e14 at netisr_dispatch_src+0xb4
#9 0xffffffff80ce3eba at ether_demux+0x16a
#10 0xffffffff80ce555e at ether_nh_input+0x3ce
#11 0xffffffff80d01e14 at netisr_dispatch_src+0xb4
#12 0xffffffff80ce4315 at ether_input+0xd5
#13 0xffffffff809b189e at vtnet_rxq_eof+0x7ce
#14 0xffffffff809b101c at vtnet_rx_vq_process+0x9c
#15 0xffffffff80b4bc56 at ithread_loop+0x266
#16 0xffffffff80b47f32 at fork_exit+0x82
#17 0xffffffff810c42ce at fork_trampoline+0xe


-- 
Bjoern A. Zeeb                                                     r15:7