CVE-2026-80678 in Linux
الملخص
بحسب VulDB • 28/08/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
i2c: imx: تصحيح سباق التسجيل (race condition) في تسجيل الجهاز الثانوي ومعالجة الأخطاء
في دالة `i2c_imx_reg_slave()`، كان مؤشر الجهاز الثانوي (`slave`) يُعيّن قبل استدعاء `pm_runtime_resume_and_get()`. إذا فشل استدعاء `pm_runtime_resume_and_get()`، كانت مسار الخطأ يعود دون مسح قيمة `i2c_imx->slave`، مما يتركها غير صفرية (non-NULL) ويسبب فشل جميع محاولات التسجيل اللاحقة بخطء `-EBUSY`.
بالإضافة إلى ذلك، نظرًا لأن هذا السائق يستخدم مقاطعة مشتركة (shared IRQ)، يمكن لمعالج المقاطعة `i2c_imx_isr()` أن يعمل بشكل متزامن، وبعد الحصول على قفل الجهاز الثانوي (`slave_lock`)، يقوم بإلغاء مرجع المؤشر `i2c_imx->slave`. كانت محاولة الإصلاح السابقة قد أضافت تعيينًا لـ `i2c_imx->slave = NULL` بدون استخدام القفل (lockless) في مسار الخطأ، لكن ذلك كان يمكن أن يتسبب في سباق مع معالج المقاطعة (ISR) تحت تأثير القفل ولا يزال يؤدي إلى إلغاء مرجع مؤشر فارغ (NULL pointer dereference).
تم إصلاح كلتا المشكلتين من خلال تأخير تعيين `i2c_imx->slave` و `i2c_imx->last_slave_event` حتى بعد نجاح عملية الاستئناف، ومن خلال إجراء التعيين داخل القسم الحرج للقفل (`slave_lock`). يضمن ذلك ألا يُترك مؤشر الجهاز الثانوي قديمًا (stale) في مسار الخطأ، وأن يكون صالحًا دائمًا عند ملاحظته من قبل معالج المقاطعة.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.