android_kernel_motorola_sm6225/drivers/net/wireless
Alexey Khoroshilov 9494849e53 ath9k_htc: fix data race between request_firmware_nowait() callback and suspend()
ath9k_hif_usb_probe() requests firmware asynchronically and
there is some initialization postponed till firmware is ready.
In particular, ath9k_hif_usb_firmware_cb() callback initializes
hif_dev->tx.tx_buf and hif_dev->tx.tx_pending lists.

At the same time, ath9k_hif_usb_suspend() iterates that lists through
ath9k_hif_usb_dealloc_urbs(). If suspend happens before request_firmware_nowait()
callback is called, it can lead to oops.

Similar issue could be in ath9k_hif_usb_disconnect(), but it is prevented
using hif_dev->fw_done completion and HIF_USB_READY flag. The patch extends
this approach to suspend() as well.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-07-17 14:34:49 -04:00
..
ath ath9k_htc: fix data race between request_firmware_nowait() callback and suspend() 2013-07-17 14:34:49 -04:00
b43 b43: replace B43_BCMA_EXTRA with modparam allhwsupport 2013-06-27 13:42:15 -04:00
b43legacy Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2013-04-24 10:54:20 -04:00
brcm80211 brcmfmac: remove code and comment for older kernel support 2013-06-27 13:42:19 -04:00
cw1200 cw1200: Fix up a large pile of sparse warnings 2013-06-24 14:44:24 -04:00
hostap wireless: single_open() leaks 2013-05-05 00:13:20 -04:00
ipw2x00 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-07-09 18:24:39 -07:00
iwlegacy Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2013-06-21 15:42:30 -04:00
iwlwifi iwlwifi: mvm: Add support for Low Power RX 2013-06-25 12:21:19 +02:00
libertas net: wireless: replace strict_strtoul() with kstrtoul() 2013-06-03 00:39:46 -07:00
libertas_tf mac80211: Use a cfg80211_chan_def in ieee80211_hw_conf_chan 2013-03-25 19:19:35 +01:00
mwifiex Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-06-19 16:49:39 -07:00
orinoco net/trivial: replace numeric with standard PM state macros 2013-06-28 22:11:48 -07:00
p54 net: wireless: p54spi: Fix commenting style 2013-05-29 15:22:46 -04:00
prism54
rt2x00 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-07-09 18:24:39 -07:00
rtl818x mac80211: Use a cfg80211_chan_def in ieee80211_hw_conf_chan 2013-03-25 19:19:35 +01:00
rtlwifi rtlwifi: Initialize power-setting callback for USB devices 2013-07-17 14:34:48 -04:00
ti Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-07-09 18:24:39 -07:00
zd1211rw mac80211: Use a cfg80211_chan_def in ieee80211_hw_conf_chan 2013-03-25 19:19:35 +01:00
adm8211.c mac80211: Use a cfg80211_chan_def in ieee80211_hw_conf_chan 2013-03-25 19:19:35 +01:00
adm8211.h
airo.c drivers: avoid parsing names as kthread_run() format strings 2013-07-03 16:07:41 -07:00
airo.h
airo_cs.c drivers/net: use module_pcmcia_driver() in pcmcia drivers 2013-03-15 12:27:33 -07:00
at76c50x-usb.c mac80211: Use a cfg80211_chan_def in ieee80211_hw_conf_chan 2013-03-25 19:19:35 +01:00
at76c50x-usb.h
atmel.c atmel: printing bogus information 2013-05-22 14:51:11 -04:00
atmel.h
atmel_cs.c drivers/net: use module_pcmcia_driver() in pcmcia drivers 2013-03-15 12:27:33 -07:00
atmel_pci.c
Kconfig cw1200: add driver for the ST-E CW1100 & CW1200 WLAN chipsets 2013-05-29 15:26:40 -04:00
mac80211_hwsim.c Revert "mac80211_hwsim: remove P2P_DEVICE support" 2013-05-31 10:23:05 +02:00
mac80211_hwsim.h
Makefile cw1200: add driver for the ST-E CW1100 & CW1200 WLAN chipsets 2013-05-29 15:26:40 -04:00
mwl8k.c mwl8k: Fix the firmware hang issue for 8764 2013-05-24 13:18:22 -04:00
ray_cs.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-05-01 17:51:54 -07:00
ray_cs.h
rayctl.h
rndis_wlan.c
wl3501.h
wl3501_cs.c drivers/net: use module_pcmcia_driver() in pcmcia drivers 2013-03-15 12:27:33 -07:00
zd1201.c
zd1201.h