Revert "mesh: Apply channel attributes before setup interface"

This reverts commit 2564184440.

Commit 2564184440 ("mesh: Apply channel attributes before setup
interface") triggers some channel configurations to result in leaking
memory. This seems to be caused by hapd->started not getting set when
going through a callback to start hostapd operation (e.g., when using
HT40 coex scan) due to hostapd_setup_bss() not getting called. This
results in hostapd_free_hapd_data() not clearing allocated
hapd->wpa_auth. This can be reproduced with the hwsim test case
mesh_secure_ocv_mix_legacy.

A more complete cleanup of the pending mesh patch for DFS support seems
to be needed to fix this properly, so the best approach for now is to
revert this patch and bring it back once rest of the mesh changes are
ready to be applied.

Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
This commit is contained in:
Masashi Honma 2019-01-15 20:43:41 +09:00 committed by Jouni Malinen
parent 9758b08bcf
commit 3e949655cc

View file

@ -251,7 +251,7 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
struct mesh_conf *mconf; struct mesh_conf *mconf;
int basic_rates_erp[] = { 10, 20, 55, 60, 110, 120, 240, -1 }; int basic_rates_erp[] = { 10, 20, 55, 60, 110, 120, 240, -1 };
int rate_len; int rate_len;
int frequency, saved_freq; int frequency;
if (!wpa_s->conf->user_mpm) { if (!wpa_s->conf->user_mpm) {
/* not much for us to do here */ /* not much for us to do here */
@ -383,13 +383,6 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
conf->basic_rates[rate_len] = -1; conf->basic_rates[rate_len] = -1;
} }
/* Handle pri/sec switch frequency within AP configuration parameter
* generation without changing the stored network profile in the end. */
saved_freq = ssid->frequency;
ssid->frequency = frequency;
wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf);
ssid->frequency = saved_freq;
if (wpa_drv_init_mesh(wpa_s)) { if (wpa_drv_init_mesh(wpa_s)) {
wpa_msg(wpa_s, MSG_ERROR, "Failed to init mesh in driver"); wpa_msg(wpa_s, MSG_ERROR, "Failed to init mesh in driver");
return -1; return -1;
@ -401,6 +394,8 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
return -1; return -1;
} }
wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf);
return 0; return 0;
out_free: out_free:
wpa_supplicant_mesh_deinit(wpa_s); wpa_supplicant_mesh_deinit(wpa_s);