CVE-2026-63883

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

State
Published
Severity
7.3 High
Published
Jul 19, 2026
Updated
Aug 5, 2026
Reserved
Jul 19, 2026

Read the record on cve.org

Description

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 4. uart_flush_buffer() releases the port lock 5. 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.

Scores

CVSSScoreVectorSource
3.17.3 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:LLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 2aaa43c7077833301c237684cd7bc9ae5e3dec95 to before c91ea13375f70f6271a0183445e34e83b8f4d8f7Affected
  • 2aaa43c7077833301c237684cd7bc9ae5e3dec95 to before b1159dce10b38eb795e4c96cdc4d34b83cec81c5Affected
  • 2aaa43c7077833301c237684cd7bc9ae5e3dec95 to before 654f45a8569f3cd6ff20bd724a18e0cce65893baAffected
  • 2aaa43c7077833301c237684cd7bc9ae5e3dec95 to before 0d2c41a8b00934ddf8a7c1b4cf72dffa1e629c46Affected
  • 2aaa43c7077833301c237684cd7bc9ae5e3dec95 to before 452d6fa37ae9b021f4f6d397dbae077f7296f6f4Affected
LinuxLinux
  • 6.3Affected
  • before 6.3Not affected
  • 6.6.143 through 6.6.*Not affected
  • 6.12.93 through 6.12.*Not affected
  • 6.18.35 through 6.18.*Not affected
  • 7.0.12 through 7.0.*Not affected
  • 7.1 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.