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

الملخص

بحسب VulDB • 18/10/2026

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

drm/amd/display: إضفاء الطابع الذري (Atomicity) على عمليات القراءة/التعديل/الكتابة لمقاطع مقاطعة الجهاز (IRQ registers).

[لماذا]

يتحكم سجل OTG_GLOBAL_SYNC_STATUS في مصادر مقاطعات الأجهزة المختلفة مولد توقيت الإخراج (OTG). يُعد VUPDATE_NO_LOCK أحد هذه المصادر.

لتفعيل المقطع (IRQ)، يضبط السائق بت VUPDATE_NO_LOCK_EN في سجل GLOBAL_SYNC_STATUS.

وللإقرار باستلام المقطع بعد حدوثه، يضبط السائق بت VUPDATE_NO_LOCK_CLEAR في نفس سجل GLOBAL_SYNC_STATUS.

تُجرى عمليات ضبط هذه البتات من خلال عمليات قراءة/تعديل/كتابة (RMW)، وهي ليست ذرية (non-atomic). وبالتالي، فإن سباقاً محتملاً التالي ممكن الحدوث:

الخيط A: معالج المقطع (IRQ handler): *حدوث مقطع جهاز* # تعطيل المقطع val = read(GLOBAL_SYNC_STATUS) unset(val, VUPDATE_NO_LOCK_EN) write(val, GLOBAL_SYNC_STATUS) # قراءة الإقرار لـ VUPDATE_NO_LOCK_EN غير مضبوطة (unset) val1 = read(GLOBAL_SYNC_STATUS) set(val1, VUPDATE_NO_LOCK_CLEAR) # تفعيل المقطع val = read(GLOBAL_SYNC_STATUS) set(val, VUPDATE_NO_LOCK_EN) write(val, GLOBAL_SYNC_STATUS) # سيء! يقوم بإلغاء ضبط VUPDATE_NO_LOCK_EN write(val1, GLOBAL_SYNC_STATUS)

بالنسبة لتغيير "Fixes" المصنف، يبدو أن التغيير قد زاد من احتمالية حدوث سباق. وبما أن VUPDATE_NO_lock هو مصدر المقطع الوحيد لمعالجة vblank الآن، فإن أي سباق واحد على اللوحات ذات معدل التحديث العالي يمكن أن يؤدي إلى انتهاء المهلة (timeout).

[كيف]

سجل GLOBAL_SYNC_STATUS ليس سوى مثال واحد؛ فمقاطع التحكم الأخرى في مقاطعات الجهاز تشارك أيضاً نفس المخطط. بالإضافة إلى ذلك، دعنا نقوم بتنظيف تلك المقاطع أيضاً.

للحفاظ على البساطة، سنضفي الطابع الذري على عمليات RMW الخاصة بالمقاطعة (IRQ) عبر قفل لولبي واحد يغطي السائق بأكمله (driver-wide spinlock). ونظراً للنطاق الصغير لهذا القفل، فمن غير المرجح أن يسبب عبئاً ملحوظاً فوق جميع أقفال التثبيت الموجودة ضمن مسارات إعداد/معالجة المقاطعات.

بما أن وحدة DM مسؤولة عن قفل التثبيت، فسنقوم بتغليف دالتي dc_interrupt_set/ack بقفل لولبي في الدوال الجديدة amdgpu_dm_irq_set/ack. سننقل أو نحذف جميع المراجع في وحدة DM إلى استخدام amdgpu_dm_irq_set/ack بدلاً من ذلك.

(تم اختياره cherry-picked من الالتزام commit 70de0a0216583a53c946155f8c8adedfdca6b4e7)

VulDB is the best source for vulnerability data and more expert information about this specific topic.

مسؤول

Linux

حجز

25/09/2026

إفشاء

18/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-422111

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Want to stay up to date on a daily basis?

Enable the mail alert feature now!