CVE-2026-93145 in Linux
Resumen
por VulDB • 2026-09-19
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
clk: qcom: gdsc: eliminar los genpds por dominio en gdsc_unregister()
gdsc_unregister() elimina la entrada del proveedor OF y desmonta el cableado padre/subdominio, pero nunca llama a pm_genpd_remove() sobre las estructuras generic_pm_domain individuales registradas por gdsc_init():
void gdsc_unregister(struct gdsc_desc *desc) {
struct device *dev = desc->dev; size_t num = desc->num;
gdsc_pm_subdomain_remove(desc, num); of_genpd_del_provider(dev->of_node); }
Esto deja entradas colgantes en la lista global gpd_list. Después de un ciclo de desvinculación/vinculación del proveedor (reproducción diferida de sondeos durante el arranque temprano, descarga real de módulos de un controlador clk que posee GDSCs o eliminación de superposiciones OF), la siguiente llamada a gdsc_init() intentará volver a registrar un nombre que aún está en la lista y pm_genpd_init() devuelve -EEXIST.
Mientras estamos aquí, invirtamos el orden para que la entrada del proveedor OF visible para los consumidores sea lo primero que se elimine; de lo contrario, una llamada concurrente a of_genpd_get_from_provider podría adjuntarse a un dominio que está en proceso de eliminación.
Iterar sobre la matriz scs[] y llamar a pm_genpd_remove() en cada dominio registrado después de desmontar los enlaces de subdominio. Los reguladores siguen siendo gestionados por devm (devm_regulator_get_optional() en gdsc_register()), por lo que la liberación ocurre automáticamente cuando el dispositivo subyacente se desvincula; solo es necesario deshacer explícitamente la contabilidad genpd.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.