serial: 8250: Fix TX deadlock when using DMA
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.253, 5.15.203, 6.1.167, 6.6.130, 6.12.78, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: serial: 8250: Fix TX deadlock when using DMA `dmaengine_terminate_async` does not guarantee that the `__dma_tx_complete` callback will run. The callback is currently the only place where `dma->tx_running` gets cleared. If the transaction is canceled and the callback never runs, then `dma->tx_running` will never get cleared and we will never schedule new TX DMA transactions again. This change makes it so we clear `dma->tx_running` after we terminate the DMA transaction. This is "safe" because `serial8250_tx_dma_flush` is holding the UART port lock. The first thing the callback does is also grab the UART port lock, so access to `dma->tx_running` is serialized.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 5.10.235 · fixed in 5.10.253; From 5.15.179 · fixed in 5.15.203; From 6.1.129 · fixed in 6.1.167; From 6.6.79 · fixed in 6.6.130; From 6.12.16 · fixed in 6.12.78; From 5.4.291 · fixed in 5.5; From 6.13.4 · fixed in 6.14
- Linux Linux
6.14
References 8
git.kernel.org
- stable/c/8190f9ab6ad90cb97652adbebd238b874a4ef70d
- stable/c/79a19bd936bb35f56ef0ccab1b3b59ebce8c762d
- stable/c/f76d91271bcacbd759a2e4ee3ea61faa6a727ccf
- stable/c/d2719a0a9c3439abf67843a5504b7afccd9ded93
- stable/c/2a72403b985aea6b4aac3171830492f9a387f9e1
- stable/c/5f6b17562f03fc65c7d3474ef8f1959b19d1ca41
- stable/c/b5ad887339503103d0fbe9827b16ad287597c275
- stable/c/a424a34b8faddf97b5af41689087e7a230f79ba7