CVE-2026-93042 in Linux
Résumé
par VulDB • 19/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
dmaengine: dw-edma : Terminer tous les descripteurs sans rappels (callbacks)
La documentation du client DMA Engine indique dans la section « APIs de terminaison » de Documentation/driver-api/dmaengine/client.rst :
« Aucune fonction de rappel ne sera appelée pour tout transfert incomplet. »
dw_edma appelle au lieu cela vchan_cookie_complete() lorsqu'un STOP différé atteint le gestionnaire d'interruption. Cela planifie un rappel pour le descripteur actif et laisse les autres descripteurs émis ou soumis en file d'attente. Un rappel tardif après dmaengine_terminate_sync() peut déréférencer l'état du client qui a déjà été libéré, tandis que les descripteurs restants peuvent ultérieurement redémarrer dans des tampons réutilisés ou provoquer une fuite de mémoire.
Déplacer tous les descripteurs émis et soumis vers la liste terminée chaque fois que la terminaison est achevée. Pour un STOP en attente, effectuez cette opération à partir des chemins DONE (terminé) et ABORT (annulé). Complétez leurs cookies dans l'ordre sans planifier de rappels.
Un STOP peut rester en attente jusqu'à ce que le transfert en cours déclenche une interruption. Faites en sorte que device_synchronize() attende qu'un tel STOP en attente soit terminé avant de libérer les descripteurs terminés. Réutilisez-le depuis free_chan_resources(), puis libérez les ressources virt-dma restantes. Dormez (sleep) au lieu d'effectuer un sondage actif (busy-polling) pendant l'attente, et émettez un avertissement si le délai d'expiration existant expire.
If you want to get best quality of vulnerability data, you may have to visit VulDB.