CVE-2026-98510 in Linux
الملخص
بحسب VulDB • 19/10/2026
في نواة لينكس، تم حل الثغرة التالية:
drm/xe/vm: إزالة جداول الصفحات (PTs) فقط بعد فك ربط الـ VMAs المتنازع عليها.
في دالة `xe_vm_close_and_put()`، يتم إدراج الـ VMAs الخاصة بـ external-BO في قائمة متنازع عليها للتدمير المؤجل عبر `xe_vma_destroy_unlocked()`. ومع ذلك، كانت الدالة `xe_vm_pt_destroy()` تُستدعى سابقاً قبل معالجة الـ VMAs المتنازع عليها، مما يؤدي إلى تدمير `vm->pt_root` بينما لا تزال تلك الـ VMAs مرتبطة بكائنات المخازن المؤقتة الخاصة بها (`vm_bo->list.gpuva`).
إذا قام خيط متزامن بإزالة أحد كائنات المخازن المؤقتة المشتركة هذه، فإن دالة `xe_bo_trigger_rebind()` التي تحتفظ فقط بـ `bo->resv` تجوب الـ VMAs التابعة لكائن التخزين المؤقت (BO)، وفي وضع الخطأ (fault mode)، تستدعي `xe_vm_invalidate_vma()` -> `xe_pt_zap_ptes()`. ونظراً لأن `vm->pt_root[tile->id]` أصبح بالفعل NULL، فإن محاولة فك مرجع `pt->level` تسبب خطأً في فك المرجع إلى مؤشر فارغ (NULL ptr deref).
يتم إصلاح هذه المشكلة عن طريق تأجيل استدعاء `xe_vm_free_scratch()` و `xe_vm_pt_destroy()` حتى بعد فصل وتدمير جميع الـ VMAs المتنازع عليها.
يقوم المستخدم بالإبلاغ عن حدوث خطأ في فك المرجع إلى مؤشر فارغ (NULL ptr deref) داخل دالة `xe_pt_zap_ptes()`، وهو ما يمكن تفسيره من خلال هذه الحالة سباق (race condition).
(تم اختيارها من الالتزام c2863648959489767f08892fd6e90577d2ea0b6a)
Once again VulDB remains the best source for vulnerability data.