linux/drivers/net/wireless
Andreas Fenkart 2716fd7d45 mwifiex: hold proper locks when accessing ra_list / bss_prio lists
Not locking ra_list when dequeuing packets creates race conditions.
When adding a packet 'tx_pkts_queued' is modified before setting
highest_priority_queue. If in-between the main loop starts, it will
see a packet queued (tx_pkts_queued > 0) but will not find it, since
max prio is not set yet. Depending on the scheduling, the thread
trying to add the packet could complete and restore the situation.
But this is not something to rely on.

Another race condition exists, if a new packet, exceeding current
max prio is added. If concurrently a packet is dequeued, the newly
set max prio will be overwritten with the value of the dequeued
packet. This can occur, because selecting a packet and modifying
the max prio is not atomic. The result in an infinite loop unless,
a new packet is added that has at least the priority of the hidden
packet.

Same applies to bss_prio_tbl. Forward iteration is no proper
lock-free technique and provides no protection from calls to
list_del. Although BSS are currently not added/removed dynamically,
this must not be the case in the future. Hence always hold proper
locks when accessing those lists.

Signed-off-by: Andreas Fenkart <andreas.fenkart@streamunlimited.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-04-08 15:28:40 -04:00
..
ath ath9k: add support for DFS master mode 2013-04-08 15:28:38 -04:00
b43 b43: make struct b2056_inittabs_pts const 2013-04-01 16:06:50 -04:00
b43legacy Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2012-12-11 16:24:55 -05:00
brcm80211 brcmfmac: enable sk_buff queueing when credits deplete 2013-04-03 15:07:09 -04:00
hostap net: wireless: hostap: hostap_ap.c: Return -ENOMEM instead of -1 for if kmalloc() fails. 2013-02-18 15:30:40 -05:00
ipw2x00 Driver core patches for 3.9-rc1 2013-02-21 12:05:51 -08:00
iwlegacy Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-03-29 16:41:36 -04:00
iwlwifi Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-03-29 16:41:36 -04:00
libertas Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem 2013-03-01 13:52:03 -05:00
libertas_tf
mwifiex mwifiex: hold proper locks when accessing ra_list / bss_prio lists 2013-04-08 15:28:40 -04:00
orinoco orinoco_usb: don't release nonexistent firmware 2013-03-11 15:06:13 -04:00
p54 mac80211: pass queue bitmap to flush operation 2013-03-18 20:15:03 +01:00
prism54 wireless: Remove unnecessary alloc/OOM messages, alloc cleanups 2013-02-04 13:22:34 -05:00
rt2x00 rt2x00: rt2800lib: probe RT chipset earlier 2013-04-01 16:09:41 -04:00
rtl818x drivers/net/wireless/rtl818x: remove depends on CONFIG_EXPERIMENTAL 2013-01-22 12:01:35 -08:00
rtlwifi rtlwifi: rtl8188ee: Fix allyesconfig build failures 2013-04-08 15:28:38 -04:00
ti Merge branch 'for-linville' of git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx 2013-03-25 16:40:52 -04:00
zd1211rw Driver core patches for 3.9-rc1 2013-02-21 12:05:51 -08:00
adm8211.c
adm8211.h
airo_cs.c wireless: Remove unnecessary alloc/OOM messages, alloc cleanups 2013-02-04 13:22:34 -05:00
airo.c
airo.h
at76c50x-usb.c wireless: Remove unnecessary alloc/OOM messages, alloc cleanups 2013-02-04 13:22:34 -05:00
at76c50x-usb.h
atmel_cs.c wireless: Remove unnecessary alloc/OOM messages, alloc cleanups 2013-02-04 13:22:34 -05:00
atmel_pci.c
atmel.c
atmel.h
Kconfig drivers/net/wireless: remove depends on CONFIG_EXPERIMENTAL 2013-01-22 12:01:35 -08:00
mac80211_hwsim.c mac80211_hwsim: assign CAB queue properly on interface type change 2013-03-18 22:14:26 +01:00
mac80211_hwsim.h
Makefile wireless: fix Atheros drivers compilation 2012-12-17 15:48:43 -05:00
mwl8k.c mwl8k: always apply configuration even when device is idle 2013-03-27 13:37:37 -04:00
ray_cs.c ray_cs: read past the end of the array 2013-03-06 16:25:47 -05:00
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: update email address 2013-03-08 15:58:54 -05:00
wl3501_cs.c
wl3501.h
zd1201.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
zd1201.h