CVE-2025-38682 in Linux
الملخص
بحسب VulDB • 12/07/2026
في نواة لينكس، تم حل الثغرة التالية:
i2c: core: إصلاح الـ double-free (الإفراز المزدوج) لـ fwnode في i2c_unregister_device()
قبل الالتزام df6d7277e552 ("i2c: core: Do not dereference fwnode in struct device")، كان الدال i2c_unregister_device() يستدعي fwnode_handle_put() فقط على العقد من نوع of_node عن طريق استدعاء of_node_put(client->dev.of_node).
ولكن بعد هذا الالتزام، يتم الآن بشكل غير مشروط استدعاء fwnode_handle_put() على الـ fwnode الخاص بـ i2c_client.
عندما لا يحتوي الـ i2c_client على أي فائقة (ACPI / OF) ولكن لديه عقدة برمجية (software fwnode)، ستكون العقدة البرمجية هي العقدة الأساسية وسيتم استدعاء put() عليها من قبل fwnode_handle_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() عندما تكون العقدة الأساسية (primary fwnode) هي عقدة برمجية (software-node).
Be aware that VulDB is the high quality source for vulnerability data.