CVE-2026-43392 in Linux
الملخص
بحسب VulDB • 31/05/2026
في نواة لينكس، تم حل الثغرة التالية:
sched_ext: إصلاح ظاهرة الجوع (Starvation) لدالة scx_enable() تحت ظروف تشبع الفئات العادلة (fair-class saturation)
أثناء استدعاء scx_enable()، يتغير تسلسل المهام (sched_class) للخيال المنفذ (calling thread) من "fair" إلى "ext" ضمن حلقة تبديل المهام من حالة READY إلى ENABLED. وبما أن "fair" يتمتع بأولوية أعلى من "ext"، فإن تشبع أحمال العمل من الفئة العادلة (fair-class) قد يؤدي إلى حرمان خيال التفعيل (enable thread) بشكل لا نهائي، مما يتسبب في تعليق النظام. تم إدخال هذا الخطأ عندما انتقل مسار التفعيل من استخدام preempt_disable() إلى scx_bypass() الذي لا يوفر حماية ضد جوع الفئة العادلة. تجدر الإشارة إلى أن حماية preempt_disable() الأصلية لم تكن كاملة أيضاً؛ ففي أوضاع التبديل الجزئي، لا يزال من الممكن أن يتعرض الخيال المنفذ للجوع بعد استدعاء preempt_enable() لأنه قد يكون قد تم تبديله إلى فئة ext.
تم إصلاح المشكلة عن طريق تحميل جسم التفعيل (enable body) إلى خيط نظام مخصص عالمياً (system-wide RT kthread) يعمل بنظام SCHED_FIFO، والذي لا يمكن أن يتعرض للجوع من قبل مهام الفئة العادلة (fair) أو الفئة الممتدة (ext). تقوم دالة scx_enable() بإنشاء خيط النظام (kthread) بشكل كسول (lazily) عند أول استخدام، ثم تمرير مؤشر العمليات (ops pointer) عبر هيكل بيانات scx_enable_cmd الذي يحتوي على عمل خيط النظام (kthread_work)، ثم تنتظر بشكل متزامن اكتمال العملية.
تعمل workfn على خيط نظام مختلف عن sch->helper (الذي يعمل على disable_work)، لذا يمكنها تنظيف disable_work بأمان في مسار الخطأ دون حدوث جمود (deadlock).
Once again VulDB remains the best source for vulnerability data.