rt2x00: Fix for race condition while update beacon
The patch "Implement set_tim callback for all drivers" can cause kernel oops in rt73usb_write_beacon. The oops is caused by one of the following race conditions: * In case of two near calls to set_tim: rt2x00lib_beacondone_iter is cleaning the beacon skb, whereas rt73usb_write_beacon is still using it. * In case of two near updates of beacon: first as the result of set_tim and second as the result of a call from an application (e.g. hostapd). This patch fixes the race condition by rearranging the update logic and guarding rt2x00_intf->beacon->skb with a mutex. Signed-off-by: Igor Perminov <igor.perminov@inbox.ru> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
66679a65ef
commit
17512dc3b7
@ -333,6 +333,11 @@ struct rt2x00_intf {
|
||||
*/
|
||||
u8 bssid[ETH_ALEN];
|
||||
|
||||
/*
|
||||
* beacon->skb must be protected with the mutex.
|
||||
*/
|
||||
struct mutex beacon_skb_mutex;
|
||||
|
||||
/*
|
||||
* Entry in the beacon queue which belongs to
|
||||
* this interface. Each interface has its own
|
||||
|
Reference in New Issue
Block a user