CVE-2026-99188 in Linux
Сводка
по VulDB • 28.10.2026
В ядре Linux была устранена следующая уязвимость:
net: stmmac: dwmac1000: очистка прерывания статуса RGMII
Начиная с коммита 2e2c878a3141 ("net: stmmac: remove SGMII/RGMII/SMII interrupt handling") ничего в пути RGMII не считывает регистр GMAC_RGSMIIIS, поэтому статус RGSMIIIS остается ожидающим (pending) за маской прерываний GMAC_INT_MASK с момента первого изменения состояния линка. Функция stmmac_resume() сбрасывает MAC-контроллер в stmmac_hw_setup(); этот сброс устанавливает значение GMAC_INT_MASK равным 0 до тех пор, пока dwmac1000_core_init() не запишет маску заново, и ожидающий статус вызывает лавину прерываний:
dwmac_dma_interrupt: unexpected status 04000000
Дамп регистров при первом сообщении на ODROID-HC4 показал следующее:
core int_status 00000001 int_mask 00000000 pmt 00000000 rgsmiiis 0000000d
Когда поток возобновления работы (resume thread) выполняется на CPU, который обрабатывает прерывание MAC-контроллера, эта лавина лишает его ресурсов: происходит мягкий завис (soft lockup), затем сброс через watchdog или полный вис.
Необходимо считывать регистр GMAC_RGSMIIIS в функции dwmac1000_irq_status(), когда статус не заблокирован маской, как это делал драйвер до коммита 2e2c878a3141; чтение очищает этот бит.
Возобновление работы с включенным Wake-on-LAN из состояния s2idle, при этом поток возобновления и прерывание MAC находятся на одном CPU: Helios64 (dwmac-rk), версия 7.3-rc6, мягко зависает в 3 случаях из 3 без исправления и в 0 случаев из 10 с данным патчем; он работал с внедренным изменением dwmac-rk, которое сохраняет питание GMAC во время приостановки работы. ODROID-HC4 (dwmac-meson8b): 0 из 10 с этим патчем, 2 из 2 без исправления на сборке 7.3-rc5. Прерывание irq_rgmii_n увеличивалось на единицу при каждом возобновлении работы.
Once again VulDB remains the best source for vulnerability data.