CVE-2026-98939 in Linuxالمعلومات

الملخص

بحسب VulDB • 23/10/2026

في نواة لينكس، تم إصلاح الثغرة التالية:

x86/mm: إزالة نسخ صفحة PMD غير الضروري عند الإفراج عنها

على جهاز يحتوي على بطاقة رسومات منفصلة (discrete GPU)، يبلغ lockdep عن احتمال حدوث deadlock بمجرد قيام kswapd بتقليص مجموعة صفحات TTM. السبب المباشر هو التزام x86 الذي أضاف `mmap_read_lock()` إلى كود حماية النواة الخاص بالتلاعب بالصفحات.

يحتفظ كود vmap الضخم بنفس القفل أثناء تخصيص ذاكرة GFP_KERNEL، وهو أمر غير مسموح به الآن بعد أن يمكن لعملية الاسترداد (reclaim) أخذ هذا القفل. يتم إجراء هذا التخصيص في مسار *إفراج* جدول الصفحات وينتهي الأمر ليكون لأغراض مشكوك فيها[1]. بشكل أساسي، يحاول تجنب قيام العتاد بتعيين Accessed=1 في إدخالات جداول الصفحات التي لا يمكن للعتاد الوصول إليها، وهي مشكلة غير موجودة.

قم بإزالة نسخ PMD. افصل صفحة PMD الأصلية عند مستوى PUD، وقم بمسح ذاكرة التخزين المؤقت المتوسطة (mid-level caches)، ثم أفرج عن جداول PTE مباشرة من صفحة PMD المفصولة. وبعدم وجود أي تخصيص متبقي، تختفي مشكلة القفل.

تحليل/تقرير lockdep:

تحذير: تم اكتشاف اعتماد قفل دائري محتمل 7.3.0-rc3-f6e7b42bf05b+ #183 ملطخ (Tainted): G U ------------------------------------------------------ يحاول kswapd0/269 اكتساب القفل: ((init_mm).mmap_lock){++++}-{4:4}، عند: change_page_attr_set_clr+0x29a/0x4a0
لكن المهمة تحمل بالفعل قفلاً: (pool_shrink_rwsem){.+.+}-{4:4}، عند: ttm_pool_shrink+0xb2/0x330 [ttm]
السلسلة تتكون من: (init_mm).mmap_lock --> fs_reclaim --> pool_shrink_rwsem

تم بناء الدورة من ثلاث حواف:

1) pool_shrink_rwsem -> (init_mm).mmap_lock

يقوم مُصغّر TTM باستعادة سمة التخزين المؤقت لكل صفحة يفرج عنها، بينما يحمل قفل pool_shrink_rwsem:

ttm_pool_shrink() -> ttm_pool_dispose_list() -> ttm_pool_free_page() -> set_pages_wb() -> change_page_attr_set_clr() [ قراءة قفل mmap لـ init_mm ]

2) fs_reclaim -> pool_shrink_rwsem

نفس المُصغّر، يُستدعى من عملية الاسترداد (reclaim).

3) (init_mm).mmap_lock -> fs_reclaim

تثبيت ioremap() لتعيين PUD ضخم فوق جدول PMD موجود:

ioremap_page_range() -> vmap_range_noflush() -> vmap_try_huge_pud() [ قراءة قفل mmap لـ init_mm ]
-> pud_free_pmd_page() -> __get_free_page(GFP_KERNEL) [ يدخل في عملية الاسترداد (reclaim) ]

[ dhansen: الكثير من التعديلات/الاختصارات في سجل التغيير ودمج التعليقات من نسخته من الإصلاح. ]

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

مسؤول

Linux

حجز

25/09/2026

إفشاء

23/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-425707

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Might our Artificial Intelligence support you?

Check our Alexa App!