CVE-2026-12629: PL011 UART error interrupts never cleared, enabling an external-peer interrupt-storm denial of service

Published Aug 17, 2026
·
Updated

The ARM PL011 UART driver in drivers/serial/uartpl011.c fails to acknowledge receive error interrupts. On the PL011, the framing, parity, break, and overrun error interrupts (PL011IMSCERRORMASK) are cleared only by writing the interrupt-clear register UARTICR; reading the data register clears the RX interrupt and the per-byte RSR status but not the error interrupt status in MIS. The interrupt service routine pl011isr() acknowledged only the CTS modem-status interrupt and never wrote icr for the error bits, so an asserted error interrupt remains pending after the ISR returns.

When an application enables error-interrupt reporting via the public uartirqerrenable() API, an attacker who controls the serial peer can deterministically assert these error bits by injecting line errors on the RX line — a baud/stop-bit mismatch or mid-character break (framing/break error), a flipped parity bit (parity error), or FIFO flooding (overrun error). Because the error interrupt is never cleared, the interrupt line stays asserted and the CPU re-enters pl011isr() immediately and indefinitely, producing an interrupt-storm livelock from which the core makes no forward progress.

The impact is an availability-only denial of service (permanent hang), reachable from an external or removable UART peer. Exploitation is gated by configuration: the error interrupt is off by default and no in-tree subsystem enables it, so only applications that explicitly call uartirqerrenable() on a PL011-based, interrupt-driven port are affected. The fix makes pl011isr() acknowledge the pending error bits via uart->icr, breaking the loop, and additionally clears the latched RSR status in pl011errcheck().

Affected Software

2 affected components
Arm PL011 UART
Linux Linux kernel (drivers/serial/uart_pl011.c)

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Avoid enabling PL011 receive error interrupts via the uart_irq_err_enable() API on PL011-based interrupt-driven UART ports unless needed, since affected error interrupts are latched and can cause an interrupt-storm livelock.

    PL011 UART (drivers/serial/uart_pl011.c) uart_irq_err_enable() / PL011 error interrupt enablement = disable error-interrupt reporting unless explicitly required
  2. Configuration

    In pl011_isr(), acknowledge the pending receive error interrupts by writing to the interrupt-clear register (uart->icr / UARTICR) for the PL011_IMSC_ERROR_MASK error bits, so the asserted error interrupt is cleared and the core does not re-enter pl011_isr() indefinitely.

    PL011 UART Interrupt clearing mechanism for error bits (UARTICR via uart->icr) = write UARTICR to acknowledge pending error bits via pl011_isr()
  3. Configuration

    In pl011_err_check(), additionally clear the latched RSR status so the latched error state does not remain set after interrupt handling.

    PL011 UART pl011_err_check() latched RSR status clearing = clear latched RSR status

Event History

Aug 17, 2026
CVE Published
via MITRE·04:18 PM
Data Sourced
via MITRE·04:18 PM
DescriptionSeverityWeakness
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-12629?

CVE-2026-12629 has a medium severity score of 4.6.

2

How do I fix CVE-2026-12629?

To fix CVE-2026-12629, ensure that the UART driver acknowledges and clears receive error interrupts properly.

3

What impact does CVE-2026-12629 have?

CVE-2026-12629 can lead to an external-peer interrupt-storm denial of service.

4

Which software is affected by CVE-2026-12629?

CVE-2026-12629 affects the Arm PL011 UART driver in the Linux kernel.

5

What type of vulnerability is CVE-2026-12629?

CVE-2026-12629 is a denial of service vulnerability due to unacknowledged UART error interrupts.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203