cfg80211: Ignore downstream DEAUTH for authtry_bsses
authorPaul Stewart <pstew@chromium.org>
Wed, 8 Jun 2011 12:52:52 +0000 (05:52 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 10 Jun 2011 18:26:51 +0000 (14:26 -0400)
Downsteram DEAUTH messages do not refer to a current authentication
attempt -- AUTH responses do.  Therefore we should not allow DEAUTH
from an AP to void state for an AUTH attempt in progress.

Signed-off-by: Paul Stewart <pstew@chromium.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/wireless/mlme.c

index 493b939970cd6cbefbd7ebad18cbf6c4d1405ed5..3633ab6af1842a1ba2b656ec126fa1ee9a97de5a 100644 (file)
@@ -170,7 +170,9 @@ void __cfg80211_send_deauth(struct net_device *dev,
                        break;
                }
                if (wdev->authtry_bsses[i] &&
-                   memcmp(wdev->authtry_bsses[i]->pub.bssid, bssid, ETH_ALEN) == 0) {
+                   memcmp(wdev->authtry_bsses[i]->pub.bssid, bssid,
+                          ETH_ALEN) == 0 &&
+                   memcmp(mgmt->sa, dev->dev_addr, ETH_ALEN) == 0) {
                        cfg80211_unhold_bss(wdev->authtry_bsses[i]);
                        cfg80211_put_bss(&wdev->authtry_bsses[i]->pub);
                        wdev->authtry_bsses[i] = NULL;