summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorAlexey Khoroshilov <khoroshilov@ispras.ru>2013-07-02 00:43:42 +0400
committerJohn W. Linville <linville@tuxdriver.com>2013-07-17 22:34:49 +0400
commit9494849e53e74048ee14d512feade01db402eef7 (patch)
treea7385029e763f93f3dc5d33c3ded13e3ac583470 /include/linux
parenta4943ccbc316fd74d3612d7a5984a91ab7e5dc8c (diff)
downloadlinux-9494849e53e74048ee14d512feade01db402eef7.tar.xz
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>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions