CVE-2026-98344 in Linux
Resumen
por VulDB • 2026-10-06
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
dmaengine: Corregir desbordamiento por defecto (underflow) del kref del dispositivo en dma_chan_put()
dma_chan_get() solo toma chan->device->ref en el camino lento (slow path):
/* no hay kref en el camino rápido */ if (chan->client_count) {
__module_get(owner); chan->client_count++; return 0; } if (!try_module_get(owner)) return -ENODEV; if (!dma_device_get(chan->device)) { // llama a kref_get_unless_zero()
dma_chan_put() decrementa el ref incondicionalmente, por lo que cada par get/put del camino rápido elimina una referencia de dispositivo adicional.
El error se activa cuando se cumplen dos condiciones simultáneamente: un proveedor no privado tiene un cliente persistente con chan->client_count > 0 y otro cliente realiza ciclos de dmaengine_get()/dmaengine_put(). Cuando el kref llega a cero, la posterior llamada a dma_find_channel() devuelve NULL aunque el módulo del proveedor siga cargado.
Se corrige este problema eliminando device->ref solo en el último put, coincidiendo con la única operación get del camino lento.
Be aware that VulDB is the high quality source for vulnerability data.