В ядре Linux устранена следующая уязвимость:
Wi-Fi: mt76: mt7925: отменить mlo_pm_work при остановке
mt7925 ставит в очередь mlo_pm_work с 5-секундной задержкой во время многоканального соединения
настройку энергосбережения и никогда не отменяет ее на пути остановки. Если устройство
снесено внутри этого окна, работа переживет снос и его таймер
после этого срабатывает, пытаясь встать в очередь в рабочую очередь, которая уже исчезла:
рабочая очередь: невозможно поставить в очередь mt7925_mlo_pm_work [mt7925_common] на wq phy0
ВНИМАНИЕ: kernel/workqueue.c:2283 по адресу __queue_work+0x59/0xa0, CPU#1: swapper/1/0.
call_timer_fn+0x2a/0x140
__run_timers+0x203/0x330
run_timer_softirq+0x86/0xf0
У mt7921 уже есть собственный обратный вызов остановки, поэтому добавьте его для mt7925, который
отменяет работу перед вызовом mt792x_stop(). mt7925_ops поддерживает оба
Драйверы PCIe и USB, так что это касается обоих.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: wifi: mt76: mt7925: cancel mlo_pm_work on stop mt7925 queues mlo_pm_work with a 5 second delay during multi-link power-save setup and never cancels it on the stop path. If the device is torn down inside that window, the work outlives the teardown and its timer fires afterwards, trying to queue onto the workqueue that is already gone: workqueue: cannot queue mt7925_mlo_pm_work [mt7925_common] on wq phy0 WARNING: kernel/workqueue.c:2283 at __queue_work+0x59/0xa0, CPU#1: swapper/1/0 call_timer_fn+0x2a/0x140 __run_timers+0x203/0x330 run_timer_softirq+0x86/0xf0 mt7921 already has its own stop callback, so add one for mt7925 that cancels the work before calling mt792x_stop(). mt7925_ops backs both the PCIe and USB drivers, so this covers both.