diff options
author | Eliad Peller <eliad@wizery.com> | 2012-07-02 14:42:03 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-07-19 08:58:57 -0700 |
commit | 3cf16f7e388934d4458d0d6cebdf752e4424f226 (patch) | |
tree | 39ab80a575f7ad735c01cc6806fe9ead84034d34 | |
parent | c8ed7cf355f41b649524029c49f101d878499482 (diff) | |
download | linux-3.10-3cf16f7e388934d4458d0d6cebdf752e4424f226.tar.gz linux-3.10-3cf16f7e388934d4458d0d6cebdf752e4424f226.tar.bz2 linux-3.10-3cf16f7e388934d4458d0d6cebdf752e4424f226.zip |
mac80211: destroy assoc_data correctly if assoc fails
commit 10a9109f2705fdc3caa94d768b2559587a9a050c upstream.
If association failed due to internal error (e.g. no
supported rates IE), we call ieee80211_destroy_assoc_data()
with assoc=true, while we actually reject the association.
This results in the BSSID not being zeroed out.
After passing assoc=false, we no longer have to call
sta_info_destroy_addr() explicitly. While on it, move
the "associated" message after the assoc_success check.
Signed-off-by: Eliad Peller <eliad@wizery.com>
Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | net/mac80211/mlme.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 1197e8dd5b0..d132b98bd1c 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -2183,15 +2183,13 @@ ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata, sdata->name, mgmt->sa, status_code); ieee80211_destroy_assoc_data(sdata, false); } else { - printk(KERN_DEBUG "%s: associated\n", sdata->name); - if (!ieee80211_assoc_success(sdata, *bss, mgmt, len)) { /* oops -- internal error -- send timeout for now */ - ieee80211_destroy_assoc_data(sdata, true); - sta_info_destroy_addr(sdata, mgmt->bssid); + ieee80211_destroy_assoc_data(sdata, false); cfg80211_put_bss(*bss); return RX_MGMT_CFG80211_ASSOC_TIMEOUT; } + printk(KERN_DEBUG "%s: associated\n", sdata->name); /* * destroy assoc_data afterwards, as otherwise an idle |