Re: [PATCH] wpa_supplicant: fix race condition in mesh mpm new peer handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2019-02-12 20:15, Johannes Berg wrote:
> On Tue, 2019-02-12 at 15:12 +0100, Felix Fietkau wrote:
>> 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 <nbd@xxxxxxxx>
>> ---
>>  wpa_supplicant/mesh_mpm.c | 11 ++++++-----
>>  1 file changed, 6 insertions(+), 5 deletions(-)
>> 
>> diff --git a/wpa_supplicant/mesh_mpm.c b/wpa_supplicant/mesh_mpm.c
>> index 44859396c..4bd130fb8 100644
>> --- a/wpa_supplicant/mesh_mpm.c
>> +++ b/wpa_supplicant/mesh_mpm.c
>> @@ -685,11 +685,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;
>> -	}
> 
> That's kinda odd, how could you process another event between
> those calls?
>From what I can see, it happens when there are multiple calls to
mesh_sta_info_get in mac80211 (resulting in calls to
cfg80211_notify_new_peer_candidate), before user space has a chance to
create the station entry.
In my tests this happened quite frequently and resulted in log output
like this:

Tue Feb 12 12:53:37 2019 daemon.notice wpa_supplicant[14613]: wlan1: new peer notification for 78:a3:51:1d:b1:69
Tue Feb 12 12:53:37 2019 daemon.notice wpa_supplicant[14613]: wlan1: new peer notification for 78:a3:51:1d:b1:69
Tue Feb 12 12:53:37 2019 daemon.err wpa_supplicant[14613]: wlan1: Driver failed to insert 78:a3:51:1d:b1:69: -80
Tue Feb 12 12:53:37 2019 daemon.notice wpa_supplicant[14613]: wlan1: new peer notification for 78:a3:51:1d:b1:69
Tue Feb 12 12:53:38 2019 daemon.notice wpa_supplicant[14613]: wlan1: new peer notification for 78:a3:51:1d:b1:69
Tue Feb 12 12:53:38 2019 daemon.err wpa_supplicant[14613]: wlan1: Driver failed to insert 78:a3:51:1d:b1:69: -80

- Felix

_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap



[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux