Skip to main content

Linux Kernel CVE-2026-63883

| EUVDEUVD-2026-45768 HIGH
2026-07-19 Linux GHSA-rjh6-3wfg-m2hh
7.3
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
7.3 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L
vuln.today AI
4.5 MEDIUM

Local device access and low privilege (PR:L), a narrow flush-vs-IRQ race (AC:H), and bounded impact - stale UART bytes leaked and corrupted output - justify C:L/I:L/A:L, not high.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
SUSE
HIGH
qualitative
Red Hat
7.0 MEDIUM
qualitative

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
Low

Lifecycle Timeline

5
Analysis Generated
Jul 20, 2026 - 16:06 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
7.3 (HIGH)
Patch available
Jul 19, 2026 - 17:19 EUVD
CVE Published
Jul 19, 2026 - 14:54 cve.org
HIGH 7.3
CVE Published
Jul 19, 2026 - 14:54 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

In the Linux kernel, the following vulnerability has been resolved:

serial: qcom_geni: fix kfifo underflow when flush precedes DMA completion IRQ

When uart_flush_buffer() runs before the DMA completion IRQ is delivered, the following race can occur (all steps serialized by uart_port_lock):

  1. DMA starts: tx_remaining = N, kfifo contains N bytes
  2. DMA completes in hardware; IRQ is pending but not yet delivered
  3. uart_flush_buffer() acquires the port lock and calls kfifo_reset(),

making kfifo_len() = 0 while tx_remaining remains N

  1. uart_flush_buffer() releases the port lock
  2. DMA IRQ fires; handle_tx_dma() acquires the port lock and calls

uart_xmit_advance(uport, tx_remaining) on an empty kfifo

uart_xmit_advance() increments kfifo->out by tx_remaining. Since kfifo_reset() already set both in and out to 0, out wraps past in, causing kfifo_len() to return UART_XMIT_SIZE - tx_remaining. The next start_tx_dma() call then submits a DMA transfer of stale buffer data.

Fix this by snapshotting kfifo_len() at the start of handle_tx_dma() and skipping uart_xmit_advance() when fifo_len < tx_remaining, which indicates the kfifo was reset by a preceding flush.

AnalysisAI

Information disclosure and buffer corruption in the Linux kernel's Qualcomm GENI serial driver (qcom_geni) allows leakage of stale TX buffer contents over the UART line when uart_flush_buffer() races a pending DMA-completion IRQ. On affected builds (6.3 through the fixed stable releases), a kfifo underflow drives kfifo->out past kfifo->in, so a subsequent start_tx_dma() transmits residual/stale buffer data rather than intended output. No public exploit identified at time of analysis; EPSS is low (0.20%, 10th percentile) and the flaw is local-only and timing-dependent.

Technical ContextAI

The bug lives in drivers/tty/serial/qcom_geni_serial.c, which drives the GENI-based serial engine found on Qualcomm SoCs. Kernel serial cores use a circular kfifo to buffer transmit bytes, with tx_remaining tracking the byte count handed to a DMA transfer. The root-cause class is a race condition (CWE-362) leading to use of stale/uninitialized buffer data (CWE-908/CWE-200 information exposure): although the port lock serializes individual sections, a uart_flush_buffer() → kfifo_reset() can land between DMA hardware completion and delivery of the completion IRQ. When handle_tx_dma() later calls uart_xmit_advance(uport, tx_remaining) on a fifo whose in/out were both reset to 0, kfifo->out wraps below kfifo->in, so kfifo_len() reports UART_XMIT_SIZE - tx_remaining. The next DMA submission then reads and transmits stale ring-buffer contents. CPE data attributes this to cpe:2.3:a:linux:linux, i.e. the mainline Linux kernel.

RemediationAI

Vendor-released patch: update to a fixed stable kernel - 6.6.143, 6.12.93, 6.18.35, 7.0.12, or 7.1, or later within each series - via your distribution's kernel updates. The fix snapshots kfifo_len() at the start of handle_tx_dma() and skips uart_xmit_advance() when fifo_len < tx_remaining, indicating a preceding flush reset the kfifo. Apply the corresponding stable commit if you maintain a custom kernel; the relevant commits are at https://git.kernel.org/stable/c/c91ea13375f70f6271a0183445e34e83b8f4d8f7 and the backport hashes listed in the EUVD/references. There is no clean feature-level workaround because the affected code is core TX-DMA handling for the qcom_geni UART; on platforms where the GENI serial console is non-essential, restricting local access and avoiding heavy concurrent flush/transmit workloads reduces the already-narrow race window, but the trade-off is that this is unreliable and does not eliminate the bug - patching is the only robust remediation.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-63883 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy