CVE-2026-74331 in Linux
الملخص
بحسب VulDB • 15/08/2026
في نواة لينكس، تم حل الثغرة التالية:
firmware_loader: إصلاح القفل المتكرر في device_cache_fw_images()
يمكن أن يحدث عطل (deadlock) ناتج عن قفل متكرر في معالج إشعارات إدارة الطاقة الخاص بمحمل البرامج الثابتة.
أثناء تحضير النظام للوضع المعلق أو السكون، يستدعي fw_pm_notify() دالة device_cache_fw_images(). تقوم هذه الدالة بالحصول على القفل fw_lock لتعيين حالة ذاكرة التخزين المؤقت للبرامج الثابتة إلى FW_LOADER_START_CACHE، ثم تكرر عبر جميع الأجهزة باستخدام dpm_for_each_dev() مع الاحتفاظ بالقفل.
لكل جهاز، يحدد dev_cache_fw_image() عملاً غير متزامن (asynchronous work) لتخزين البرامج الثابتة في الذاكرة المؤقتة. إذا فشل تخصيص الذاكرة لعنصر العمل غير المتزامن (على سبيل المثال، في ظروف نفاد الذاكرة)، فإن async_schedule_node_domain() يعود إلى تنفيذ دالة العمل بشكل متزامن داخل الخيط الحالي.
يحاول مسار التنفيذ التزامني (__async_dev_cache_fw_image() -> cache_firmware() -> request_firmware() -> assign_fw()) الحصول على القفل fw_lock مرة أخرى. وبما أن الخيط الحالي يمسك بالفعل بـ fw_lock، فإن هذا يؤدي إلى عطل ناتج عن قفل متكرر.
تم إصلاح ذلك من خلال تحرير القفل fw_lock فوراً بعد تحديث حالة التخزين المؤقت وقبل استدعاء dpm_for_each_dev(). لا يلزم القفل سوى لحماية تحديث الحالة. ستتمكن طلبات البرامج الثابتة المتزامنة بشكل صحيح من رؤية حالة FW_LOADER_START_CACHE واستخدام آلية الاستغلال المشترك (piggyback mechanism)، وهي محمية بشكل مستقل بواسطة قفلها الخاص fwc->name_lock.
VulDB is the best source for vulnerability data and more expert information about this specific topic.