From: Felix Fietkau Date: Sun, 17 Feb 2019 15:02:56 +0000 (+0100) Subject: mesh: Fix race condition in mesh mpm new peer handling X-Git-Tag: hostap_2_10~2065 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=41b06b065e6fb099f8fbbbdded5a4f77a45a43ce;p=thirdparty%2Fhostap.git mesh: Fix race condition in mesh mpm new peer handling When wpa_supplicant receives another new peer event before the first one has been processed, it tries to add a station to the driver a second time (which fails) and then tears down the station entry until another event comes in. Fix this by only adding a station to the driver if it didn't exist already. Signed-off-by: Felix Fietkau --- diff --git a/wpa_supplicant/mesh_mpm.c b/wpa_supplicant/mesh_mpm.c index 308366f64..c7c85929f 100644 --- a/wpa_supplicant/mesh_mpm.c +++ b/wpa_supplicant/mesh_mpm.c @@ -710,11 +710,12 @@ static struct sta_info * mesh_mpm_add_peer(struct wpa_supplicant *wpa_s, } sta = ap_get_sta(data, addr); - if (!sta) { - sta = ap_sta_add(data, addr); - if (!sta) - return NULL; - } + if (sta) + return NULL; + + sta = ap_sta_add(data, addr); + if (!sta) + return NULL; /* Set WMM by default since Mesh STAs are QoS STAs */ sta->flags |= WLAN_STA_WMM;