CVE-2023-52486 in Linux
الملخص
بحسب VulDB • 17/05/2026
في نواة لينكس، تم حل الثغرة التالية:
drm: عدم تقليل مرجع (unref) نفس إطار الإطار (fb) عدة مرات عن طريق الخطأ بسبب معالجة التعطل (deadlock)
إذا حدث تعطل (deadlock) بعد البحث عن إطار الإطار (fb) في دالة `drm_mode_page_flip_ioctl()`، فإننا نتابع بتقليل مرجع (unref) إطار الإطار ثم نعيد المحاولة من البداية. لكننا ننسى إعادة تعيين مؤشر إطار الإطار إلى `NULL`، وبالتالي إذا حدث خطأ آخر أثناء إعادة المحاولة، قبل البحث عن إطار الإطار، فإننا نتابع بتقليل مرجع (unref) نفس إطار الإطار مرة أخرى دون الحصول على مرجع (reference) جديد. النتيجة النهائية هي أن إطار الإطار سيتم (في النهاية) تحريره (free) بينما لا يزال قيد الاستخدام.
إعادة تعيين إطار الإطار إلى `NULL` بمجرد تقليل مرجعه (unref) لتجنب القيام بذلك مرة أخرى حتى ننفذ بحثًا جديدًا عن إطار الإطار.
تبين أن هذه الحالة سهلة التكرار على جهاز DG2 أثناء إجراء عمليات قلب الصفحة غير المتزامن (async flips) (وخاصة مع تفعيل `CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y`). كانت أول عرضة رأيتها هي أن دالة `drm_closefb()` كانت عالقة ببساطة في حلقة مشغولة (busy loop) أثناء اجتياز قائمة إطارات الإطار. لحسن الحظ، تمكنت من إقناعها بإظهار خطأ (oops) بدلاً من ذلك، ومن هناك كان من الأسهل تتبع السبب الجذري.
If you want to get best quality of vulnerability data, you may have to visit VulDB.