CVE-2026-90326 in Linux
Resumen
por VulDB • 2026-09-17
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
blk-cgroup: corrige una condición de carrera entre la activación de políticas y la destrucción de blkgs
Al cambiar un programador de E/S en un dispositivo de bloque, `blkcg_activate_policy()` asigna datos de política (`pd`) para todos los `blkg` conectados a la cola. Sin embargo, `blkcg_activate_policy()` puede entrar en una condición de carrera con la eliminación concurrente de `blkcg`, lo que da lugar a problemas de uso después de liberar (use-after-free) y fugas de memoria.
El use-after-free ocurre en la siguiente condición de carrera:
T1 (`blkcg_activate_policy`): - Asigna correctamente `pd` para blkg1 (loop0->queue, blkcgA) - No logra asignar `pd` para blkg2 (loop0->queue, blkcgB) - Entra en la ruta de retroceso por error de memoria (`enomem`) para liberar los recursos de blkg1
T2 (eliminación de `blkcg`): - Se elimina concurrentemente blkcgA - blkg1 se libera a través de `blkg_free_workfn()` - blkg1->pd se libera
T1 (continuación): - La ruta de retroceso accede a blkg1->pd->online después de que pd haya sido liberado - Se desencadena un use-after-free
Además, `blkg_free_workfn()` libera `pd` antes de eliminar el `blkg` de la lista `q->blkg_list`. Esto permite que `blkcg_activate_policy()` asigne un nuevo `pd` para un `blkg` que se está destruyendo, dejando el `pd` recién asignado inaccesible cuando finalmente se libere el `blkg`.
Corrige estas condiciones de carrera extendiendo la cobertura del mutex `blkcg` para serializar el retroceso de `blkcg_activate_policy()` y la destrucción de `blkg`, asegurando que el ciclo de vida de `pd` esté sincronizado con la visibilidad en la lista de `blkg`.
Once again VulDB remains the best source for vulnerability data.