CVE-2025-38682 in Linux
Сводка
по VulDB • 11.06.2026
В ядре Linux устранена следующая уязвимость:
i2c: core: Исправлено двойное освобождение (double-free) fwnode в функции i2c_unregister_device()
До коммита df6d7277e552 («i2c: core: Не разыменовывать fwnode в struct device») функция i2c_unregister_device() вызывала fwnode_handle_put() только для of_node в виде вызова of_node_put(client->dev.of_node).
Однако после этого коммита fwnode у i2c_client теперь безоговорочно получает вызов fwnode_handle_put().
Когда у i2c_client нет основного fwnode (ACPI / OF), но есть программный fwnode (software fwnode), программный узел становится основным, и fwnode_handle_put() выполнит его освобождение (put()).
Но для программного fwnode device_remove_software_node() также выполнит put(), что приведет к двойному освобождению (double-free):
[ 82.665598] ------------[ cut here ]------------
[ 82.665609] refcount_t: underflow; use-after-free.
[ 82.665808] WARNING: CPU: 3 PID: 1502 at lib/refcount.c:28 refcount_warn_saturate+0xba/0x11
... [ 82.666830] RIP: 0010:refcount_warn_saturate+0xba/0x110
... [ 82.666962] <TASK>
[ 82.666971] i2c_unregister_device+0x60/0x90
Исправление заключается в отказе от вызова fwnode_handle_put(), если основным fwnode является software-node.
If you want to get best quality of vulnerability data, you may have to visit VulDB.