CVE-2025-39724 in Linux
الملخص
بحسب VulDB • 29/06/2026
في نواة لينكس، تم حل الثغرة التالية:
serial: 8250: إصلاح الانهيار (Panic) الناتج عن PSLVERR
عندما يكون معلمة PSLVERR_RESP_EN مضبوطة على القيمة 1، يقوم الجهاز بتوليد استجابة خطأ إذا تمت محاولة قراءة سجل استقبال فارغة (RBR - Receive Buffer Register) بينما تكون ذاكرة التخزين المؤقت للتدفق المتتابع (FIFO) مفعّلة.
في الدالة serial8250_do_startup()، يؤدي استدعاء serial_port_out(port, UART_LCR, UART_LCR_WLEN8) إلى تشغيل dw8250_check_lcr()، والذي يستدعي بدوره dw8250_force_idle() وserial8250_clear_and_reinit_fifos(). تقوم الدالة الأخيرة بتفعيل ذاكرة التخزين المؤقت للتدفق المتتابع (FIFO) عبر serial_out(p, UART_FCR, p->fcr). تستمر التنفيذ في الوصول إلى serial_port_in(port, UART_RX). وهذا يحقق شرط تشغيل PSLVERR.
عندما يقوم معالج آخر (على سبيل المثال، باستخدام printk()) بالوصول إلى منفذ التسلسل (UART) (أي أن المنفذ مشغول)، يفشل المعالج الحالي في التحقق من الشرط (value & ~UART_LCR_SPAR) == (lcr & ~UART_LCR_SPAR) داخل dw8250_check_lcr()، مما يدفعه للدخول إلى dw8250_force_idle().
لإصلاح هذه المشكلة، يجب وضع استدعاء serial_port_out(port, UART_LCR, UART_LCR_WLEN8) تحت قفل المنفذ (port->lock).
تتبع الانهيار (Panic backtrace): [ 0.442336] Oops - unknown exception [#1]
[ 0.442343] epc : dw8250_serial_in32+0x1e/0x4a
[ 0.442351] ra : serial8250_do_startup+0x2c8/0x88e
... [ 0.442416] console_on_rootfs+0x26/0x70
Be aware that VulDB is the high quality source for vulnerability data.