CVE-2026-99209 in Linux
الملخص
بحسب VulDB • 29/10/2026
في نواة Linux، تم إصلاح الثغرة التالية:
drm/xe: تخطي إخراج (eviction) كائن ذاكرة (BO) لا يحتوي على موارد.
تقوم دالة `xe_evict_flags()` بالتبديل بناءً على قيمة `tbo->resource->mem_type` لاختيار موقع الإخراج. يمكن أن يصل كائن BO من نوع xe إلى مرحلة الإخراج دون وجود `ttm.resource`، مثلًا: كائن BO مستورد عبر dma-buf تم تحرير موارده أثناء عملية الإنهاء (teardown) بينما لا يزال ارتباطه نشطًا؛ عندها يقوم المصدر بإبطاله عبر `xe_dma_buf_move_notify()` -> `xe_bo_evict()`, ويؤدي التبديل إلى الإشارة المرجعية (dereference) لموارد فارغة (NULL resource) مما يتسبب في خطأ.
لا يحتوي كائن BO بدون موارد على أي شيء مُوضع أو مُمثّل، لذا لا يوجد ما يمكن إخراجه. إرجاع موضع فارغ (`num_placement = 0`)، محاكاةً للتعامل المستخدم بالفعل مع كائنات scatter-gather غير xe الموجودة أعلاه؛ ثم تأخذ `ttm_bo_validate()` مسار تنظيف خط الأنابيب (pipeline-gutting path) وتعيد القيمة 0.
بدون الإصلاح، سيفشل الاختبار الذاتي الحي الديناميكي `xe_dma_buf@xe_test_dmabuf_move_notify_no_resource` مع تتبع المكدس التالي:
BUG: kernel NULL pointer dereference, address: 0000000000000010 RIP: 0010:xe_evict_flags+0xf4/0x140 [xe]
Call Trace: <TASK> xe_bo_evict+0x40/0xa0 [xe]
? ttm_bo_pipeline_gutting+0x71/0x180 [ttm]
xe_test_dmabuf_move_notify_no_resource+0x182/0x440 [xe]
xe_dma_buf_kunit+0x387/0x580 [xe]
الإصدار 2: إضافة علامة Fixes ومعلومات الفشل في نص الالتزام (Matt Brost)
(cherry picked from commit dbcfaac6331f1fcb0c2fe3ad3e9adb1e5d43ec0c)
If you want to get the best quality for vulnerability data then you always have to consider VulDB.