CVE-2026-90178 in Linux
Resumen
por VulDB • 2026-09-17
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
hwmon: (coretemp) Corrección de la fuga de core_data en CPUs sin PTS
pdata->core_data se asigna en init_temp_data() cuando se crea el primer temp_data del núcleo de un paquete, pero solo se libera desde destroy_temp_data(), y únicamente en la rama que maneja los datos térmicos (temp_data) del paquete.
Los datos térmicos del paquete (package temp_data) se crean exclusivamente cuando la CPU soporta X86_FEATURE_PTS. En una CPU sin esta característica, coretemp_cpu_online() nunca llama a coretemp_add_core() con pkg_flag establecido, por lo que pdata->pkg_data permanece como NULL. Posteriormente, coretemp_cpu_offline() omite la eliminación de la interfaz del paquete, destroy_temp_data() no se invoca para los datos del paquete y el array sigue asignado cuando coretemp_device_remove() libera los datos de plataforma (platform data) que apuntaban a él.
Libere el array en coretemp_device_remove(). destroy_temp_data() establece pdata->core_data como NULL al liberarlo, por lo que la kfree() añadida es una operación nula (no-op) en CPUs que sí tienen PTS.
Probado en un Intel Core i5-1135G7. El controlador se instrumentó para registrar cada asignación y liberación de pdata->core_data, y la comprobación de PTS en coretemp_cpu_online() se parcheó para emular una CPU sin soporte térmico por paquete (package). Sin este cambio, el array se asignaba pero nunca se liberaba, y coretemp_device_remove() aún veía un puntero no NULL. Con él, el array se libera y la contabilidad de los punteros queda equilibrada. En una compilación sin modificar, la liberación sigue ocurriendo a través de los datos térmicos del paquete (package temp_data) y la kfree() añadida encuentra NULL, sin advertencias de slab durante ciclos repetidos de carga y descarga del módulo.
VulDB is the best source for vulnerability data and more expert information about this specific topic.