in6_mcast: in6_joingroup attempts to acquire IN6_MULTI_LOCK when sleeping prohibited

From: Xin Li <delphij_at_delphij.net>
Date: Thu, 17 Oct 2019 22:50:54 -0700
I have seen this on boot of my laptop.

It appears that in6_joingroup() was called in netisr_dispatch_src
codepath, and it tried to acquire IN6_MULTI_LOCK(), which happened to
sleep because we failed to acquire the sx, thus triggered the panic.

===

panic: sleepq_add: td 0xfffff8000ecd6000 to sleep on wchan
0xffffffff81dedfe0 with sleeping prohibited


#1  0xffffffff80bbff90 in kern_reboot (howto=260)
    at /usr/src/sys/kern/kern_shutdown.c:479
#2  0xffffffff80bc03e6 in vpanic (fmt=<value optimized out>,
    ap=<value optimized out>) at /usr/src/sys/kern/kern_shutdown.c:908
#3  0xffffffff80bc0143 in panic (fmt=<value optimized out>)
    at /usr/src/sys/kern/kern_shutdown.c:835
#4  0xffffffff80c1a2bf in sleepq_add (wchan=0xffffffff81dedfe0, lock=0x0,
    wmesg=0xffffffff8110f331 "in6_multi_sx", flags=3, queue=0)
    at /usr/src/sys/kern/subr_sleepqueue.c:318
#5  0xffffffff80bc9ce4 in _sx_xlock_hard (sx=0xffffffff81dedfe0,
    x=18446735277856440320, opts=<value optimized out>,
    file=<value optimized out>, line=<value optimized out>)
    at /usr/src/sys/kern/kern_sx.c:841
#6  0xffffffff80bc983f in _sx_xlock (sx=0xffffffff81dedfe0, opts=0,
    file=0xffffffff8113a568 "/usr/src/sys/netinet6/in6_mcast.c", line=1185)
    at /usr/src/sys/kern/kern_sx.c:325
#7  0xffffffff80e17dd1 in in6_joingroup (ifp=0xfffff80003b99800,
    mcaddr=0xfffffe00e1612e58, imf=<value optimized out>,
    pinm=0xfffff80019e17300, delay=2) at
/usr/src/sys/netinet6/in6_mcast.c:1185
#8  0xffffffff80e0fa72 in in6_update_ifa (ifp=0xfffff80003b99800,
    ifra=<value optimized out>, ia=<value optimized out>,
    flags=<value optimized out>) at /usr/src/sys/netinet6/in6.c:752
#9  0xffffffff80e374c5 in nd6_ra_input (m=0xfffff800191d4a00,
    off=<value optimized out>, icmp6len=<value optimized out>)
    at /usr/src/sys/netinet6/nd6_rtr.c:2274
#10 0xffffffff80e096d5 in icmp6_input (mp=<value optimized out>,
    offp=0xfffffe00e161335c, proto=<value optimized out>)
    at /usr/src/sys/netinet6/icmp6.c:767
#11 0xffffffff80e22dff in ip6_input (m=0xfffff800191d4a00)
    at /usr/src/sys/netinet6/ip6_input.c:963
#12 0xffffffff80ceff11 in netisr_dispatch_src (proto=6, source=0,
    m=0xfffff800191d4a00) at /usr/src/sys/net/netisr.c:1127
#13 0xffffffff80cd399e in ether_demux (ifp=0xfffff80003b99800,
    m=<value optimized out>) at /usr/src/sys/net/if_ethersubr.c:916
#14 0xffffffff80cd4f88 in ether_nh_input (m=<value optimized out>)
    at /usr/src/sys/net/if_ethersubr.c:705
#15 0xffffffff80ceff11 in netisr_dispatch_src (proto=5, source=0,
    m=0xfffff800191d4a00) at /usr/src/sys/net/netisr.c:1127
#16 0xffffffff80cd3e8d in ether_input (ifp=0xfffff8000397a800, m=0x0)
    at /usr/src/sys/net/if_ethersubr.c:824
#17 0xffffffff80d429f0 in sta_input (ni=<value optimized out>,
    m=0xfffff800191d4a00, rxs=<value optimized out>,
    rssi=<value optimized out>, nf=<value optimized out>)
    at /usr/src/sys/net80211/ieee80211_sta.c:891
#18 0xffffffff80d1ec2a in ieee80211_input_mimo (ni=0xfffffe0106c66000,
    m=0xfffff800191d4a00) at /usr/src/sys/net80211/ieee80211_input.c:101
#19 0xffffffff848e55a2 in iwm_mvm_rx_rx_mpdu (sc=0xfffffe00e2c00000,
    m=0xfffff800191d4a00, offset=<value optimized out>,
    stolen=<value optimized out>) at /usr/src/sys/dev/iwm/if_iwm.c:3245
#20 0xffffffff848e3fee in iwm_intr (arg=<value optimized out>)
    at /usr/src/sys/dev/iwm/if_iwm.c:5151


Received on Fri Oct 18 2019 - 03:51:10 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:22 UTC