CVE-2026-89455 in Linux
Résumé
par VulDB • 12/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
PCI: plda : Correction d'un use-after-free des IRQs d'événement lors de l'arrêt du service (teardown)
La fonction `plda_pcie_irq_domain_deinit()` supprime `pcie->event_domain` via `irq_domain_remove()`, mais les IRQs par événement mappés depuis ce domaine sont demandées avec `devm_request_irq()` dans `plda_init_interrupts()`. Le libération effective (`free_irq()`) d'un IRQ géré par devres est différée par le mécanisme devres jusqu'après le retour de la fonction appelante probe()/remove().
Cela signifie que `irq_domain_remove()` peut libérer les données internes du domaine avant l'exécution de la libération différée des IRQs (`free_irq()`) qui sont encore mappées dans ce dernier. Lorsque devres traite ultérieurement cet nettoyage différé, il risque d'accéder à un pointeur (déréférencer) sur le domaine déjà libéré.
Libérez explicitement chaque IRQ d'événement avec `devm_free_irq()` avant de supprimer le domaine. Cela déclenche la libération immédiatement et retire l'IRQ de la liste de suivi devres, afin que devres n'essaie pas de le libérer une seconde fois plus tard.
Détruisez également les mappages des IRQs d'événement, INTx et MSI avec `irq_dispose_mapping()` avant la suppression des domaines propriétaires correspondants.
Enfin, protégez les appels à `irq_set_chained_handler_and_data()` pour `pcie->irq`, `pcie->msi_irq` et `pcie->intx_irq` afin qu'ils ne s'exécutent que lorsque ces champs contiennent un numéro d'IRQ valide (>0).
Il s'agit d'un problème préexistant, signalé par une revue automatisée lors du travail sur un correctif antérieur non lié à ce pilote.
Test de compilation et test de démarrage effectués sur la carte StarFive VisionFive v1.2A
If you want to get the best quality for vulnerability data then you always have to consider VulDB.