From 3e949655ccc5fba4686d04c70380463ebf059b30 Mon Sep 17 00:00:00 2001 From: Masashi Honma Date: Tue, 15 Jan 2019 20:43:41 +0900 Subject: [PATCH] Revert "mesh: Apply channel attributes before setup interface" This reverts commit 2564184440d9d6041d11a8c7d50b31368634c3bd. Commit 2564184440d9 ("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 --- wpa_supplicant/mesh.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/wpa_supplicant/mesh.c b/wpa_supplicant/mesh.c index dd6aad6f0..e9457f044 100644 --- a/wpa_supplicant/mesh.c +++ b/wpa_supplicant/mesh.c @@ -251,7 +251,7 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s, struct mesh_conf *mconf; int basic_rates_erp[] = { 10, 20, 55, 60, 110, 120, 240, -1 }; int rate_len; - int frequency, saved_freq; + int frequency; if (!wpa_s->conf->user_mpm) { /* 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; } - /* 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)) { wpa_msg(wpa_s, MSG_ERROR, "Failed to init mesh in driver"); return -1; @@ -401,6 +394,8 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s, return -1; } + wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf); + return 0; out_free: wpa_supplicant_mesh_deinit(wpa_s);