CVE-2026-93100 in Linuxinformación

Resumen

por VulDB • 2026-09-18

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

fs/resctrl: Prevenir un use-after-free en rdtgroup_kn_put()

Una estructura `struct rdtgroup` cuenta con una referencia gestionada a través de `rdtgroup::waitcount`. Los llamadores que necesitan que la estructura permanezca válida durante una operación de espera (mientras esperan adquirir `rdtgroup_mutex`) toman una referencia mediante `rdtgroup_kn_get()` y la liberan con `rdtgroup_kn_put()`.

La ruta de liberación está diseñada para servir como el liberador secundario: si el contador llega a cero y el grupo ya ha sido marcado como RDT_DELETED, `rdtgroup_kn_put()` libera la estructura.

Las rutas principales de desmantelamiento, `free_all_child_rdtgrp()` y `rmdir_all_sub()`, resultantes de una eliminación de directorio resctrl o del desmontaje del sistema de archivos resctrl, actúan como el liberador principal: mantienen `rdtgroup_mutex` y liberan cada `rdtgroup` cuyo `waitcount` es cero; en caso contrario, establecen RDT_DELETED y dejan la liberación al último esperante.

Estos dos mecanismos de liberación compiten por recursos (race condition). `rdtgroup_kn_put()` confirma que waitcount == 0 mediante `atomic_dec_and_test()` fuera del contexto de `rdtgroup_mutex`, luego lee `rdtgroup::flags`. Entre estas dos operaciones, un llamador concurrente de `free_all_child_rdtgrp()` o `rmdir_all_sub()` (que sí mantiene el mutex) puede observar waitcount == 0 mediante `atomic_read()`, llamar a `rdtgroup_remove()` y liberar la estructura con `kfree()`.

La lectura subsiguiente de `rdtgroup::flags` en `rdtgroup_kn_put()` constituye entonces un use-after-free, e incluso es posible que la estructura se libere dos veces si la memoria ya liberada cumple accidentalmente con la comprobación del flag RDT_DELETED.

Se reemplaza el uso directo de `atomic_dec_and_test()` por `atomic_dec_and_mutex_lock()`, de modo que la decrementación a cero adquiera `rdtgroup_mutex` antes de que el contador sea visible globalmente. La inspección de `rdtgroup::flags` se ejecuta entonces bajo el mismo mutex mantenido por los liberadores masivos, haciendo que ambas rutas sean mutuamente excluyentes.

El caso común en el que el contador no llega a cero permanece sin bloqueo (lock-free). Se pospone la llamada a `kernfs_unbreak_active_protection()` hasta después de soltar el mutex, ya que las protecciones activas de kernfs envuelven funcionalmente a `rdtgroup_mutex`. Se elimina el grupo de recursos, lo cual a su vez libera su referencia kernfs, una vez restaurada la protección kernfs.

[ bp: Dividir los mensajes del commit en párrafos más pequeños y fáciles de analizar. ]

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsable

Linux

Reservar

2026-09-17

Divulgación

2026-09-18

Moderación

aceptado

Artículo

VDB-407078

CPE

listo

EPSS

0.00166

KEV

no

Actividades

muy bajo

Fuentes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!