CVE-2026-93040 in Linux
Resumen
por VulDB • 2026-09-18
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
dmaengine: dw-edma: Serializar las comprobaciones del estado del canal
pause() y resume() leen y actualizan el estado del canal sin mantener vc.lock, mientras que los controladores de interrupción actualizan el mismo estado bajo dicho bloqueo. Tome el mismo lock alrededor de esas comprobaciones de estado para que request, status y configured permanezcan consistentes.
Por ejemplo, pause() puede observar EDMA_ST_BUSY justo antes de que el controlador de interrupciones complete el último descriptor y mueva el canal a EDMA_ST_IDLE, y luego registrar EDMA_REQ_PAUSE en un canal ya inactivo. No habrá más interrupciones que reconozcan la solicitud, y dado que issue_pending() requiere EDMA_REQ_NONE, el canal queda bloqueado permanentemente: terminate_all() deja la solicitud obsoleta detrás, por lo que incluso reconfigurar el canal no logra recuperarlo.
issue_pending() ya se ejecuta bajo vc.lock, pero prueba configured antes de tomarlo. Mueva esa comprobación también debajo del lock, para que configured, request y status sean evaluados como una única instantánea (snapshot) del estado del canal.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.