CVE-2026-74655

serial: qcom-geni: fix TX DMA buffer flush

Published Aug 22, 2026 CVSS 3.1 · 8.8 High EPSS < 1% KEV · Not listed
Description
In the Linux kernel, the following vulnerability has been resolved:

serial: qcom-geni: fix TX DMA buffer flush

When transmit flushing a qcom-geni UART during an ongoing TX DMA, the
UART gets stuck infinitely repeating corrupted TX DMA frames.

The DMA-mode uart_ops does not provide a flush_buffer callback, so an
in-flight transfer can complete after serial core has reset the transmit
kfifo, underflowing its length and resubmitting page-sized transfers
indefinitely. Add one that stops the transfer and clears tx_remaining
and tx_queued.

The stop path was also broken: it unmapped the buffer while the serial
engine could still read it, and never reset the TX DMA state machine.
Cancel the main sequencer command first, then reset the state machine
and wait for it before unmapping. Drop the early return so a pending
mapping is also cleaned up when the main command is inactive.

The bug can be triggered from userspace with a large write immediately
followed by TCOFLUSH. A following tcdrain will hang forever. The bug was
reproduced and this fix was validated on Arduino Uno Q (QRB2210)
using /dev/ttyHS1.

Analysis

AI-generated

Technical impact

When flushing a qcom-geni UART during an ongoing transmit DMA, the UART becomes stuck in an infinite cycle that repeatedly sends corrupted DMA frames. The driver’s DMA-mode operations lack a proper flush callback, so an in-flight transfer can complete after the serial core resets the transmit FIFO, underflowing the buffer length and causing the driver to resubmit page-sized transfers endlessly. The stop path is also defective: it unmapped the buffer while the serial engine may still access it and never resets the TX DMA state machine, so the asynchronous cleanup never completes. This combination leads to a hang that manifests when a large write is immediately followed by the TCOFLUSH ioctl and an ensuing tcdrain, which blocks forever.

Affected Systems

The flaw resides in the Linux kernel’s qcom‑geni UART driver. Systems that run a kernel version containing the unpatched driver and rely on qcom‑geni UART devices—examples include the Arduino Uno Q (QRB2210) using /dev/ttyHS1—are susceptible. Any Linux installation that incorporates the affected driver code before the patch will be affected.

Risk and Exploitability

The EPSS score of < 1% indicates a very low probability of exploitation. The CVSS score of 8.8 marks this as a high severity local denial of service. The vulnerability is not listed in CISA’s KEV catalog, implying limited evidence of exploitation. The attack vector is local: any userspace process on a system running an unpatched kernel can trigger the condition by performing a large write to a qcom‑geni UART followed by a TCOFLUSH ioctl and then a tcdrain, leading to an infinite loop that stalls the UART driver.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Update the kernel to a version that includes the patch applied in commit 1c31e2377f4c1bb110ca7f6e597b2253a7440c37 or later.
  • If an update is not immediately possible, avoid using large writes followed by TCOFLUSH or tcdrain on affected UART devices until the patch is applied.
  • Modify application code to use alternative flush mechanisms that do not rely on TCOFLUSH/Tcdrain on qcom‑geni UARTs until the kernel is updated.

Generated by OpenCVE AI on August 25, 2026 at 17:17 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Debian DLA Debian DLA DLA-4788-1 linux-6.12 security update
Debian DSA Debian DSA DSA-6466-1 linux security update
Ubuntu USN Ubuntu USN USN-9019-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-9020-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-9022-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-9023-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-9024-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-9025-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-9026-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-9039-1 Linux kernel (Azure CVM) vulnerabilities
Ubuntu USN Ubuntu USN USN-9040-1 Linux kernel (Low Latency NVIDIA) vulnerabilities
Ubuntu USN Ubuntu USN USN-9066-1 Linux kernel (HWE) vulnerabilities
Ubuntu USN Ubuntu USN USN-9091-1 Linux kernel (NVIDIA Tegra) vulnerabilities
History
Type Values Removed Values Added
Weaknesses CWE-665
Type Values Removed Values Added
Weaknesses CWE-665
Type Values Removed Values Added
Weaknesses CWE-400
Type Values Removed Values Added
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H'}

Type Values Removed Values Added
Weaknesses CWE-400
Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: serial: qcom-geni: fix TX DMA buffer flush When transmit flushing a qcom-geni UART during an ongoing TX DMA, the UART gets stuck infinitely repeating corrupted TX DMA frames. The DMA-mode uart_ops does not provide a flush_buffer callback, so an in-flight transfer can complete after serial core has reset the transmit kfifo, underflowing its length and resubmitting page-sized transfers indefinitely. Add one that stops the transfer and clears tx_remaining and tx_queued. The stop path was also broken: it unmapped the buffer while the serial engine could still read it, and never reset the TX DMA state machine. Cancel the main sequencer command first, then reset the state machine and wait for it before unmapping. Drop the early return so a pending mapping is also cleaned up when the main command is inactive. The bug can be triggered from userspace with a large write immediately followed by TCOFLUSH. A following tcdrain will hang forever. The bug was reproduced and this fix was validated on Arduino Uno Q (QRB2210) using /dev/ttyHS1.
Title serial: qcom-geni: fix TX DMA buffer flush
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References
Weaknesses
  • CWE-835

    Loop with Unreachable Exit Condition ('Infinite Loop')

Sources

Status
PUBLISHED
Assigner
Linux
Published
Updated
Aug 27, 2026, 12:39 PM
Reserved
Aug 15, 2026, 5:44 AM
Status
Received
Published
Aug 22, 2026, 4:16 PM
Modified
Oct 14, 2026, 1:10 PM
Severity
Moderate
Public date
Aug 22, 2026, 12:00 AM