CVE-2026-89455 in Linux
Сводка
по VulDB • 12.09.2026
В ядре Linux была устранена следующая уязвимость:
PCI: plda: исправлена ошибка use-after-free для прерываний событий (event IRQs) при завершении работы (teardown).
Функция `plda_pcie_irq_domain_deinit()` удаляет домен `pcie->event_domain` с помощью `irq_domain_remove()`, однако пер-событийные прерывания, сопоставленные с этим доменом, запрашиваются через `devm_request_irq()` в функции `plda_init_interrupts()`. Фактическое освобождение (`free_irq`) для управляемых devres прерываний откладывается механизмом devres и происходит после возврата из вызывающей функции probe()/remove().
Это означает, что `irq_domain_remove()` может освободить внутренние данные домена до того, как выполнится отложенное освобождение (`free_irq`) для прерываний (IRQ), которые все еще сопоставлены с этим доменом. Когда devres впоследствии обрабатывает это отложенное завершение работы, оно может попытаться разыменовать уже освобожденный домен.
Явно освободите каждое событийное прерывание с помощью `devm_free_irq()` перед удалением домена. Это приводит к немедленному освобождению и удаляет IRQ из списка отслеживания devres, поэтому devres не будет пытаться освободить его повторно позже.
Также выполните очистку сопоставлений для событийных прерываний (event), INTx и MSI с помощью `irq_dispose_mapping()` перед удалением соответствующих доменов-владельцев.
Наконец, добавьте защиту вызовов `irq_set_chained_handler_and_data()` для полей `pcie->irq`, `pcie->msi_irq` и `pcie->intx_irq`, чтобы они выполнялись только тогда, когда эти поля содержат действительный номер IRQ (>0).
Это существующая проблема, обнаруженная автоматизированным обзором кода при работе над более ранним, не связанным патчем для этого драйвера.
Протестировано на этапе сборки и загрузки (boot-tested) на плате StarFive VisionFive v1.2A.
If you want to get best quality of vulnerability data, you may have to visit VulDB.