Details
[Home]
Issue of the Implementation # L0116
Brief
drivers/net/wireless/ath/ath9k/hif_usb.c: data race between request_firmware_nowait() callback and suspend()
Detailed Description
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.
Component
linux-kernel 3.10
Accepted
https://lkml.org/lkml/2013/7/1/520
commit
Status
Fixed in kernel 3.11-rc2
[Home]