summaryrefslogtreecommitdiff
path: root/tools/perf/lib/Documentation/tutorial/git@git.tavy.me:linux-stable.git
diff options
context:
space:
mode:
authorRaul E Rangel <rrangel@chromium.org>2026-02-09 13:58:18 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-03-12 15:29:59 +0100
commita424a34b8faddf97b5af41689087e7a230f79ba7 (patch)
treed50fd9b76d7f2907e13d8eaaa6367468f0b22d6c /tools/perf/lib/Documentation/tutorial/git@git.tavy.me:linux-stable.git
parent1f318b96cc84d7c2ab792fcc0bfd42a7ca890681 (diff)
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. Fixes: 9e512eaaf8f4 ("serial: 8250: Fix fifo underflow on flush") Cc: stable <stable@kernel.org> Signed-off-by: Raul E Rangel <rrangel@google.com> Link: https://patch.msgid.link/20260209135815.1.I16366ecb0f62f3c96fe3dd5763fcf6f3c2b4d8cd@changeid Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'tools/perf/lib/Documentation/tutorial/git@git.tavy.me:linux-stable.git')
0 files changed, 0 insertions, 0 deletions