android_kernel_motorola_sm6225/drivers/net/wireless/ath
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
..
ar5523 mac80211: Use a cfg80211_chan_def in ieee80211_hw_conf_chan 2013-03-25 19:19:35 +01:00
ath5k 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
ath6kl Merge branch 'for-linville' of git://github.com/kvalo/ath6kl 2013-06-13 13:33:39 -04:00
ath9k ath9k_htc: fix data race between request_firmware_nowait() callback and suspend() 2013-07-17 14:34:49 -04:00
ath10k ath10k: minimally handle new channel width enumeration values 2013-06-27 13:50:09 -04:00
carl9170 carl9170: add support for the new rate control API 2013-06-13 13:32:28 -04:00
wil6210 wil6210: add HW write-back option in TX descriptor 2013-06-24 14:44:26 -04:00
ath.h ath9k: Merge HWTIMER debug level with BTCOEX 2013-06-18 14:46:44 -04:00
debug.c
hw.c ath: update hardware mac address with bssid mask 2013-04-22 15:20:15 -04:00
Kconfig ath10k: mac80211 driver for Qualcomm Atheros 802.11ac CQA98xx devices 2013-06-12 20:52:10 +03:00
key.c ath: Let user know which keycache method is complaining. 2013-04-08 15:28:37 -04:00
main.c ath: Add and use pr_fmt, convert printks to pr_<level> 2012-04-10 14:52:13 -04:00
Makefile ath10k: mac80211 driver for Qualcomm Atheros 802.11ac CQA98xx devices 2013-06-12 20:52:10 +03:00
reg.h ath: update hardware mac address with bssid mask 2013-04-22 15:20:15 -04:00
regd.c ath: add VHT80 support for regulatory domains 2013-06-12 14:59:40 -04:00
regd.h wireless: make the reg_notifier() void 2013-01-14 11:32:44 +01:00
regd_common.h