From: Jouni Malinen Date: Sat, 1 Sep 2012 14:20:27 +0000 (+0300) Subject: SME: Fix disconnec-while-authenticating X-Git-Tag: hostap_2_0~294 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bcdf2096bd7e89161ada76c6915eb04ad98f6c77;p=thirdparty%2Fhostap.git SME: Fix disconnec-while-authenticating Commit 0d30cc240fa36905b034dc9676f9d8da0ac18e56 forced wpa_s->current_ssid to be cleared in wpa_supplicant_mark_disassoc() which gets called from wpa_supplicant_event_disassoc(). This broke SME disassoc-while-authenticating workaround for cfg80211. Fix this by restoring wpa_s->current_ssid in case SME authentication is in progress. Signed-hostap: Jouni Malinen --- diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c index 82a854170..7780e9a10 100644 --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c @@ -1801,6 +1801,7 @@ static void wpa_supplicant_event_disassoc_finish(struct wpa_supplicant *wpa_s, u8 prev_pending_bssid[ETH_ALEN]; struct wpa_bss *fast_reconnect = NULL; struct wpa_ssid *fast_reconnect_ssid = NULL; + struct wpa_ssid *last_ssid; authenticating = wpa_s->wpa_state == WPA_AUTHENTICATING; os_memcpy(prev_pending_bssid, wpa_s->pending_bssid, ETH_ALEN); @@ -1869,10 +1870,13 @@ static void wpa_supplicant_event_disassoc_finish(struct wpa_supplicant *wpa_s, wpa_s->keys_cleared = 0; wpa_clear_keys(wpa_s, wpa_s->bssid); } + last_ssid = wpa_s->current_ssid; wpa_supplicant_mark_disassoc(wpa_s); - if (authenticating && (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME)) + if (authenticating && (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME)) { sme_disassoc_while_authenticating(wpa_s, prev_pending_bssid); + wpa_s->current_ssid = last_ssid; + } if (fast_reconnect) { #ifndef CONFIG_NO_SCAN_PROCESSING