Fix a mutex LOR introduced by the conversion of if_ndis from spinlocks to
mutexes and replacing the obsolete if_watchdog interface. The ndis_ticktask function calls into ieee80211_new_state under one condition with NDIS_LOCK held. The ieee80211_new_state would call into ndis_start in some cases too, resulting in the occasional case where ndis_start acquires NDIS_LOCK from inside the NDIS_LOCK held by ndis_ticktask. Obtained from: Paul B. Mahol <onemda@gmail.com> MFC after: 1 week
This commit is contained in:
parent
e80b338f3b
commit
798aa25682
@ -1717,8 +1717,10 @@ ndis_ticktask(d, xsc)
|
||||
if (sc->ndis_link == 1 &&
|
||||
sc->ndis_sts == NDIS_STATUS_MEDIA_DISCONNECT) {
|
||||
sc->ndis_link = 0;
|
||||
NDIS_UNLOCK(sc);
|
||||
if (sc->ndis_80211)
|
||||
ieee80211_new_state(vap, IEEE80211_S_SCAN, 0);
|
||||
NDIS_LOCK(sc);
|
||||
if_link_state_change(sc->ifp, LINK_STATE_DOWN);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user