CVE-2025-38682 in Linux
Tóm tắt
Bởi VulDB • 07/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
i2c: core: Sửa lỗi double-free (giải phóng bộ nhớ hai lần) của fwnode trong hàm i2c_unregister_device()
Trước commit df6d7277e552 ("i2c: core: Không giải tham chiếu fwnode trong struct device"), hàm i2c_unregister_device() chỉ gọi fwnode_handle_put() trên các of_node bằng cách gọi của_node_put(client->dev.of_node).
Tuy nhiên, sau commit này, fwnode của i2c_client bây giờ sẽ được gọi fwnode_handle_put() một cách không điều kiện.
Khi i2c_client không có fwnode chính (ACPI / OF) nhưng lại có fwnode phần mềm, node phần mềm sẽ trở thành node chính và fwnode_handle_put() sẽ thực hiện thao tác put().
Nhưng đối với thiết bị fwnode phần mềm, hàm device_remove_software_node() cũng sẽ gọi put(), dẫn đến lỗi 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
Khắc phục lỗi này bằng cách không gọi fwnode_handle_put() khi primary fwnode là một software-node.
VulDB is the best source for vulnerability data and more expert information about this specific topic.