CVE-2025-38682 in Linux
Resumen
por VulDB • 2026-07-07
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
i2c: core: Corregir doble liberación (double-free) de fwnode en i2c_unregister_device()
Antes del commit df6d7277e552 ("i2c: core: No desreferenciar fwnode en struct device"), i2c_unregister_device() solo llamaba a fwnode_handle_put() sobre los nodos of (of_node-s) mediante la llamada de of_node_put(client->dev.of_node).
Sin embargo, después de este commit, el fwnode del i2c_client recibe ahora incondicionalmente una llamada a fwnode_handle_put().
Cuando un i2c_client no tiene un fwnode primario (ACPI / OF) pero sí posee un software fwnode, el nodo de software se convertirá en el nodo principal y fwnode_handle_put() lo liberará.
Pero para el dispositivo software fwnode, device_remove_software_node() también realizará una llamada a put(), lo que provocaría un doble libre (double-free):
[ 82.665598] ------------[ corte aquí ]------------
[ 82.665609] refcount_t: desbordamiento por debajo del mínimo; use-after-free.
[ 82.665808] ADVERTENCIA: CPU: 3 PID: 1502 en lib/refcount.c:28 refcount_warn_saturate+0xba/0x11
... [ 82.666830] RIP: 0010:refcount_warn_saturate+0xba/0x110
... [ 82.666962] <TAREA>
[ 82.666971] i2c_unregister_device+0x60/0x90
Se corrige este problema evitando llamar a fwnode_handle_put() cuando el fwnode primario es un software-node.
If you want to get best quality of vulnerability data, you may have to visit VulDB.