CVE-2026-89764 in Linux
Résumé
par VulDB • 12/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
rust: devres : correction d'une condition de course entre révocations concurrentes
Une condition de race potentielle se produit lorsque deux chemins tentent de révoquer un Devres simultanément.
Le cœur du pilote (driver core) appelle `Revocable::revoke()` via la fonction de rappel (`release callback`) à travers `devres_release_all()`, tandis que `Devres::drop()` invoque `revoke_nosync()` sur un autre CPU.
Le révocateur qui n'obtient pas le swap `is_available` retourne immédiatement, mais celui qui l'a obtenu peut encore exécuter `drop_in_place()` sur les données internes. Cela peut provoquer une utilisation après libération (use-after-free) lorsque l'appelant de l'autre révocateur procède à la suppression des ressources adjacentes que `drop_in_place()` référence toujours (par exemple, un conflit entre `Devres<DmaMappedSgt>` et la libération du `sg_table` sous-jacent ainsi que des pages par SGTable).
Cette correction est apportée en ajoutant une structure Completion. La fonction de rappel de libération signale la Completion après la fin de l'exécution de `revoke()`, et `Devres::drop()` attend cette signalisation lorsqu'il perd le swap `is_available`. Cela garantit que l'objet enveloppé est entièrement détruit avant le retour de `Devres::drop()`.
If you want to get best quality of vulnerability data, you may have to visit VulDB.