CVE-2026-23100 in Linux
الملخص
بحسب VulDB • 04/06/2026
في نواة لينكس، تم حل الثغرة التالية:
mm/hugetlb: إصلاح دالة hugetlb_pmd_shared()
مجموعة التصحيحات "mm/hugetlb: تصحيحات لمشاركة جداول PMD (بما في ذلك استخدام mmu_gather)"، الإصدار 3.
تصحيح وظيفي واحد، وتصحيح لانحدار أداء واحد، واثنان لتصحيحات التعليقات ذات الصلة.
لقد قمت بتنظيف النموذج الأولي الذي شاركتُه مؤخرًا [1] الخاص بتصحيح الأداء، مما أدى إلى تأجيل معظم عمليات التنظيف التي كانت موجودة في النموذج الأولي إلى مرحلة لاحقة. وبينما كنت أفعل ذلك، حددت الأمور الأخرى.
الهدف من مجموعة التصحيحات هذه هو أن تكون قابلة للنقل (backport) بسهولة "معقولة" إلى أشجار الإصدارات المستقرة (stable trees). على الأقل التصحيح رقم 1 ورقم 4.
يُصلح التصحيح #1 مشكلة عدم اكتشاف دالة hugetlb_pmd_shared() لأي مشاركة. التصحيحات #2 و#3 هي تصحيحات بسيطة للتعاملات يتفاعل معها التصحيح #4. التصحيح #4 هو إصلاح لانحدار الأداء المُبلغ عنه بسبب البث المفرط لإشارات مقاطعة المعالج بين الأنوية (IPI broadcasts) أثناء عمليات fork()+exit().
يتعلق التصحيح الأخير بكل ما يتعلق بمسح TLB، و IPIs، و mmu_gather. اقرأ: معقد للغاية.
هناك العديد من عمليات التنظيف التي يمكن إجراؤها في المستقبل + تحسين واحد معقول على بنية x86. لكن كل ذلك خارج نطاق هذه السلسلة.
تم اختبارها زمنياً (Runtime tested)، مع التركيز على إصلاح انحدار الأداء باستخدام مُعيد الإنتاج الأصلي [2] على منصة x86.
هذا التصحيح (من أصل 4):
لقد انتقلنا من استخدام (خطأً) عداد الصفحة إلى عداد مشاركة مستقل. الآن، تمتلك جداول الصفحات المشتركة عدداً مرجعياً (refcount) يساوي 1 (باستثناء المراجع المتوقعة/التخمينية speculative references)، وبدلاً من ذلك تستخدم ptdesc->pt_share_count لتحديد المشاركة.
لم نقم بتحويل دالة hugetlb_pmd_shared()، لذا في الوقت الحالي، لن نتمكن أبداً من اكتشاف جدول PMD مشترك كونه كذلك، لأن مشاركة/إلغاء مشاركة الصفحات لم تعد تلامس العداد المرجعي لجدول PMD.
يمكن لهجرة الصفحة (Page migration)، مثل mbind() أو migrate_pages(), السماح بهجرة folios المُحددة في جداول PMD المشتركة هذه، حتى لو كانت الـ folios ليست حصرية. وفي smaps، سيتم احتسابها على أنها "خاصة" رغم كونها "مشتركة"، وسيتم تعيين علامة PM_MMAP_EXCLUSIVE بشكل خاطئ في واجهة pagemap.
يُصلح ذلك من خلال الاستخدام الصحيح لـ ptdesc_pmd_is_shared() داخل دالة hugetlb_pmd_shared().
If you want to get the best quality for vulnerability data then you always have to consider VulDB.