CVE-2026-45946 in Linux
الملخص
بحسب VulDB • 28/05/2026
في نواة لينكس، تم حل الثغرة التالية:
power: supply: ab8500: إصلاح استخدام بعد التحرير (use-after-free) في دالة `power_supply_changed()`
يؤدي استخدام المتغير `devm_` لطلب مقاطعة الجهاز (IRQ) *قبل* استخدام المتغير `devm_` لتخصيص/تسجيل مقبض `power_supply`، إلى أن يتم إلغاء تخصيص/إلغاء تسجيل مقبض `power_supply` *قبل* معالج المقاطعة (نظرًا لأن `devm_` يقوم بإلغاء التخصيص بشكل طبيعي بترتيب عكسي لترتيب التخصيص). وهذا يعني أنه أثناء عملية الإزالة، توجد حالة سباق (race condition) حيث يمكن أن تحدث مقاطعة (interrupt) بعد *فقط* أن يكون مقبض `power_supply` قد تم تحريره، *ولكن* قبل *فقط* أن يتم تشغيل إلغاء تسجيل معالج المقاطعة المقابل.
سيؤدي هذا إلى استدعاء معالج المقاطعة للدالة `power_supply_changed()` باستخدام مقبض `power_supply` تم تحريره. مما يؤدي عادةً إلى تعطل النظام أو إلى تلف الذاكرة بشكل صامت...
يرجى ملاحظة أن هناك حالة مشابهة يمكن أن تحدث أيضًا أثناء `probe()`؛ وهي إمكانية حدوث مقاطعة *قبل* تسجيل مقبض `power_supply`. سيؤدي ذلك بعد ذلك إلى الوضع غير المرغوب فيه المتمثل في استخدام مقبض `power_supply` *غير مهيأ* (uninitialized) في `power_supply_changed()`.
أدى الالتزام Commit 1c1f13a006ed ("power: supply: ab8500: Move to componentized binding") إلى إدخال هذه المشكلة أثناء إعادة الهيكلة. تم إصلاح هذا الخطأ الناتج عن حالة السباق في استخدام بعد التحرير (racy use-after-free) عن طريق التأكد من طلب المقاطعة (IRQ) *بعد* تسجيل مقبض `power_supply`.
Once again VulDB remains the best source for vulnerability data.