Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-74653

CVE-2026-74653: Linux Kernel 8250_of UART DOS Vulnerability

CVE-2026-74653 is a denial of service flaw in the Linux kernel 8250_of UART driver affecting NXP LPC32xx hardware that causes interrupt storms and CPU livelocks. This article covers technical details, impact, and mitigation.

Published:

CVE-2026-74653 Overview

CVE-2026-74653 is a Linux kernel vulnerability in the 8250_of serial driver affecting NXP LPC32xx UART hardware (PORT_LPC3220). The device can latch an RX character-timeout interrupt while the RX FIFO is empty, producing an interrupt storm that livelocks the CPU. The Interrupt Identification Register (IIR) reports UART_IIR_RX_TIMEOUT (0x0c) while the Line Status Register (LSR) Data Ready bit is clear. Because serial8250_rx_chars() only reads the Receive Holding Register (RHR) when LSR.DR is set, the level-triggered interrupt is never acknowledged and re-fires immediately.

Critical Impact

Local unprivileged users on affected LPC32xx-based ARM926 systems can trigger a soft lockup by repeatedly opening ttyS1, causing a denial-of-service condition on the single-core CPU.

Affected Products

  • Linux kernel 8250_of generic Open Firmware serial driver
  • NXP LPC32xx UART hardware using PORT_LPC3220
  • ARM926-based single-core platforms driving LPC32xx UARTs

Discovery Timeline

  • 2026-08-22 - CVE-2026-74653 published to NVD
  • 2026-08-27 - Last updated in NVD database

Technical Details for CVE-2026-74653

Vulnerability Analysis

The defect is a hardware quirk that the generic 8250 interrupt handler does not accommodate. When the LPC32xx UART latches an RX character-timeout with an empty FIFO, the handler observes iir=0xcc, lsr=0x60, and ier=0x05, then loops without progress. Because the interrupt is level-triggered, the CPU cannot exit the interrupt service routine, which trips the soft-lockup detector in serial8250_handle_irq_locked().

The condition is reproducible from userspace. Repeatedly opening the front-panel port at ttyS1 causes serial8250_do_set_termios() to re-enable interrupts on unlock, after which the handler spins indefinitely. On single-core ARM926 systems, this constitutes a local denial-of-service against the entire kernel scheduler.

Root Cause

An RX character-timeout on this hardware is only cleared by reading RHR. The mainline serial8250_rx_chars() gate reads RHR only when LSR.DR is set, so the stuck empty-FIFO timeout is never acknowledged. LPC32xx has no dedicated 8250 glue driver and is handled by the generic 8250_of, which lacked hardware-specific timeout handling. The same class of bug was previously addressed in 8250_dw, 8250_omap (UART_RX_TIMEOUT_QUIRK), and 8250_bcm7271.

Attack Vector

A local user with permission to open the affected TTY device repeatedly opens ttyS1 and invokes termios operations. The resulting re-enable of interrupts triggers the level-triggered storm. No memory corruption or privilege escalation is involved; the outcome is CPU livelock and soft lockup on a single-core system.

See the referenced kernel commits for the technical fix, including commit 1423415471274 and commit c321dc5172c8.

Detection Methods for CVE-2026-74653

Indicators of Compromise

  • Kernel soft-lockup warnings originating in serial8250_handle_irq_locked() on LPC32xx devices.
  • Register state visible in kernel logs matching iir=0xcc, lsr=0x60, ier=0x05.
  • Unresponsive console or system freeze correlating with userspace open/close activity on ttyS1.

Detection Strategies

  • Monitor dmesg and syslog for BUG: soft lockup messages referencing 8250 IRQ handlers.
  • Audit which processes hold or reopen /dev/ttyS1 on LPC32xx-based hardware.
  • Verify running kernel version against the fixed stable releases referenced in the upstream commits.

Monitoring Recommendations

  • Forward kernel logs from embedded LPC32xx devices to a centralized log store for lockup pattern searches.
  • Track interrupt counters via /proc/interrupts for anomalous growth on the UART IRQ line.
  • Alert on repeated device-open failures or watchdog resets on LPC32xx endpoints.

How to Mitigate CVE-2026-74653

Immediate Actions Required

  • Update the Linux kernel on all LPC32xx-based systems to a stable release containing the 8250_of fix.
  • Restrict permissions on /dev/ttyS1 so only trusted service accounts can open the port.
  • Audit userspace applications that open the front-panel UART for unnecessary reopen loops.

Patch Information

The fix adds a hardware-specific handle_irq for PORT_LPC3220, wired up in of_platform_serial_setup() in the same manner as fsl8250_handle_irq. On an RX timeout with an empty FIFO (LSR.DR and LSR.BI clear), the handler performs one throwaway RHR read to clear the condition and then calls serial8250_handle_irq_locked(). No received data is discarded, and the handler is a no-op on healthy UARTs. See kernel commit 7795e8abedc8 and kernel commit 3ce24bc4d115.

Workarounds

  • Disable the affected UART node in the device tree if the port is not required for operation.
  • Prevent unprivileged users from accessing /dev/ttyS1 via udev rules and group permissions.
  • Deploy watchdog-based recovery to reset devices that enter soft-lockup state until patched firmware is installed.

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.