Executive brief
The Linux kernel's MSM serial driver can enter an infinite loop printing duplicate console messages when userspace and kernel code concurrently write to the console UART. This occurs during system startup or shutdown when many services interact with the kernel. The fix disables DMA transfers for console output, ensuring reliable logging even during system crashes.
Technical details
A race condition exists in the MSM serial driver (msm_serial.c) between asynchronous DMA write operations initiated by userspace and synchronous PIO (programmed I/O) reconfiguration by the kernel's printk path. When userspace writes to the TTY device, the driver initiates a DMA transfer and releases the port lock; simultaneously, the kernel printk code can acquire the lock and reconfigure the UART to PIO mode without waiting for the pending DMA operation to complete. This collision causes the DMA engine to report zero progress, resulting in the same text being printed repeatedly. The fix adds a check to disable DMA entirely for UART ports configured as the kernel console (via uart_console() check), limiting DMA to non-console UARTs only. The patch was merged in July 2026 and has been applied across multiple kernel stable branches.
Affected products
- Linux Linux kernel 3.10.y and later (multiple stable branches affected)
Timeline
- 2026-07-06: disclosed: Patch authored by Stephan Gerhold
- 2026-07-07: patched: Commit 22dd2777e6c180e1c945b00f6d18550979436324 merged upstream
- 2026-09-04: advisory: CVE-2026-80886 published to NVD