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

الملخص

بحسب VulDB • 23/08/2026

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

serial: 8250_of: تصحيح حالة توقف مؤقت (timeout) لاستقبال البيانات في قائمة الانتظار الفارغة على معالجات LPC32xx

يمكن لواجهة UART من نوع NXP LPC32xx (PORT_LPC3220) أن تُثبت مقاطعة وقت انتهاء مهلة استقبال حرف واحد بينما تكون قائمة انتظار الاستقبال (RX FIFO) فارغة: حيث يُبلغ سجل IIR عن `UART_IIR_RX_TIMEOUT` (القيمة 0x0c)، لكن بت DR في سجل LSR يكون غير مُفعّل. يتم مسح حالة انتهاء المهلة للحرف فقط من خلال قراءة سجل RHR، ولكن الدالة `serial8250_rx_chars()` تقرأ RHR فقط عندما تكون قيمة LSR.DR مفعّلة، وبالتالي لا يحدث أي مسح لهذه الحالة أبدًا. وبما أن المقاطعة مُفعّلة بناءً على المستوى (level-triggered)، فإنها تُعاد تشغيلها فوراً، مما يؤدي إلى عاصفة مقاطعات تسبب توقفًا كاملًا للوحدة المركزية (CPU livelock) في معالجات ARM926 أحادية النواة.

يمكن إعادة إنتاج هذه المشكلة عندما يقوم المستخدم بفتح منفذ اللوحة الأمامية بشكل متكرر (ttyS1): حيث تعيد الدالة `serial8250_do_set_termios()` تفعيل المقاطعات عند فك القفل، ثم تدور الحلقة في المعالج إلى ما لا نهاية مع القيم `iir=0xcc` و `lsr=0x60` و `ier=0x05`، مما يؤدي إلى تشغيل كاشف التوقف اللين (soft-lockup detector) داخل الدالة `serial8250_handle_irq_locked()`.

لا تمتلك LPC32xx برنامجًا لاصقًا مخصصًا لمعالج 8250، بل يتم التحكم فيها بواسطة البرنامج العام `8250_of`. تمت إضافة معالج مقاطعة خاص بالعتاد (handle_irq) لـ PORT_LPC3220، وتم ربطه في دالة `of_platform_serial_setup()` بنفس الطريقة التي يُثبت بها `fsl8250_handle_irq`. يتبع المعالج منطق `dw8250_handle_irq()`: ففي حالة انتهاء مهلة الاستقبال مع وجود قائمة انتظار فارغة (حيث تكون كل من LSR.DR و LSR.BI غير مفعّلتين)، يقوم بقراءة واحدة لتسجيل RHR للتخلص من الحالة، ثم يستدعي الدالة `serial8250_handle_irq_locked()`. لا يتم أبدًا تجاهل بيانات مستلمة حقيقية، وهي عملية بلا تأثير (no-op) على وحدات UART السليمة التي لا تبلغ عن انتهاء مهلة مع عدم تفعيل بت DR.

هذا هو نفس نوع الثغرة الذي تم العمل حولها بالفعل في برامج 8250 أخرى؛ انظر الالتزام `424d79183af0` ("serial: 8250_dw: Avoid 'too much work' from bogus rx timeout interrupt") والذي يبلغ عن القيم المتطابقة `iir=0xcc/lsr=0x60`. انظر أيضًا خاصية `UART_RX_TIMEOUT_QUIRK` في برنامج `8250_omap، والملاحظة الموجودة في `8250_bcm7271`.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

مسؤول

Linux

حجز

15/08/2026

إفشاء

22/08/2026

الاعتدال

تمت الموافقة

إدخال

VDB-394425

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you want to use VulDB in your project?

Use the official API to access entries easily!