]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
cfg80211: fix locking in action frame TX
authorJohannes Berg <johannes.berg@intel.com>
Mon, 9 Aug 2010 13:52:03 +0000 (15:52 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 26 Aug 2010 23:43:25 +0000 (16:43 -0700)
commit fe100acddf438591ecf3582cb57241e560da70b7 upstream.

Accesses to "wdev->current_bss" must be
locked with the wdev lock, which action
frame transmission is missing.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
net/wireless/mlme.c

index 04c6dfdeec882d509365bcc972d228a85d7880c4..007133d2d6487a23aa61e3533c87e8e4b73bf5e3 100644 (file)
@@ -825,12 +825,18 @@ int cfg80211_mlme_action(struct cfg80211_registered_device *rdev,
                return -EINVAL;
        if (mgmt->u.action.category != WLAN_CATEGORY_PUBLIC) {
                /* Verify that we are associated with the destination AP */
+               wdev_lock(wdev);
+
                if (!wdev->current_bss ||
                    memcmp(wdev->current_bss->pub.bssid, mgmt->bssid,
                           ETH_ALEN) != 0 ||
                    memcmp(wdev->current_bss->pub.bssid, mgmt->da,
-                          ETH_ALEN) != 0)
+                           ETH_ALEN) != 0) {
+                       wdev_unlock(wdev);
                        return -ENOTCONN;
+               }
+               wdev_unlock(wdev);
+
        }
 
        if (memcmp(mgmt->sa, dev->dev_addr, ETH_ALEN) != 0)