X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=net%2Fwireless%2Fmlme.c;h=82e6002c8d678654f2cdfd7c88baa4ee53586a0b;hb=e80c14e1ae3cb637d1959a6c9a199ba2e7af5910;hp=1001db4912f723bada113e61d9211c1ce9a35998;hpb=bf931a01a2c024a54204b4b02276af6e8d99a2c0;p=cascardo%2Flinux.git diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c index 1001db4912f7..82e6002c8d67 100644 --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c @@ -93,7 +93,18 @@ void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len) } } - WARN_ON(!bss); + /* + * We might be coming here because the driver reported + * a successful association at the same time as the + * user requested a deauth. In that case, we will have + * removed the BSS from the auth_bsses list due to the + * deauth request when the assoc response makes it. If + * the two code paths acquire the lock the other way + * around, that's just the standard situation of a + * deauth being requested while connected. + */ + if (!bss) + goto out; } else if (wdev->conn) { cfg80211_sme_failed_assoc(wdev); /*