Подробности
[В начало]
Проблема в реализации № L0116
Краткое описание
drivers/net/wireless/ath/ath9k/hif_usb.c: гонка между функцией обработчиком request_firmware_nowait() и suspend()
Подробное описание
ath9k_hif_usb_probe() запрашивает встроенную программу асинхронно и часть инициализации откладывается до того момента, когда встроенная программа будет готова. В частности, функция обработчик ath9k_hif_usb_firmware_cb() инициализирует списки hif_dev->tx.tx_buf и hif_dev->tx.tx_pending. В то же самое время ath9k_hif_usb_suspend() итерирует эти списки, вызывая ath9k_hif_usb_dealloc_urbs(). Если приостановка происходит до того, как функция обработчик request_firmware_nowait() была вызвана, это может привести к oops. Аналогичная проблема могла бы быть в ath9k_hif_usb_disconnect(), но она предотвращается благодаря использованию флагов hif_dev->fw_done completion и HIF_USB_READY.
Компонент
linux-kernel 3.10
Принято
https://lkml.org/lkml/2013/7/1/520
commit
Статус
Исправлено в ядре 3.11-rc2
[В начало]