CVE-2025-39725 in Linux
الملخص
بحسب VulDB • 29/06/2026
في نواة لينكس، تم حل الثغرة التالية:
mm/vmscan: إصلاح معالجة الـ folio الضخم المعطوب (hwpoisoned) في shrink_folio_list.
في دالة `shrink_folio_list()`، قد يكون الـ folio المعطوب (hwpoisoned) من نوع "large folio"، وهو ما لا يمكن معالجته بواسطة الدالة `unmap_poisoned_folio()`. بالنسبة لـ THP (Transparent Huge Pages)، يجب تمرير العلم `TTU_SPLIT_HUGE_PMD` إلى دالة `try_to_unmap_one()` لتقسيم الـ huge PMD أولاً ثم إعادة المحاولة. بدون استخدام `TTU_SPLIT_HUGE_PMD، سيتم حدوث خطأ إلغاء مرجع المؤشر الفارغ (null-ptr deref) لمتغير pvmw.pte. حتى عند تمرير العلم `TTU_SPLIT_HUGE_PMD`، سيؤدي ذلك إلى تنشيط تحذير `WARN_ON_ONCE` لأن الصفحة غير موجودة في الـ swapcache.
نظراً لأن أحداث UCE (Uncorrectable Corrected Error / Unrecoverable Machine Check Exception حسب السياق) نادرة الحدوث في العالم الحقيقي، وتفاعل السباق مع عملية الاسترداد (reclamation) أكثر ندرة، فإن تخطي معالجة الـ large folio المعطوب يكفي. ستقوم دالة `memory_failure()` بمعالجته إذا تم تنشيط حدث UCE مرة أخرى.
يحدث هذا عندما يتنافس استرجاع الذاكرة للـ large folio مع دالة `memory_failure()`, مما يؤدي إلى توقف النواة (kernel panic). تتسلسل حالة السباق كما يلي:
cpu0 cpu1 shrink_folio_list memory_failure TestSetPageHWPoison unmap_poisoned_folio --> تنشيط خطأ BUG_ON بسبب عدم قدرة unmap_poisoned_folio على معالجة الـ large folio
[[email protected]: إضافة تعليق توضيحي إلى دالة unmap_poisoned_folio()]
If you want to get best quality of vulnerability data, you may have to visit VulDB.