* [PATCH 00/10] dmaengine: Fix teardown races, resource leaks, and error handling
@ 2026-11-11 21:52 Lee Jones
2026-11-11 21:52 ` [PATCH 06/10] dmaengine: arm-dma350: Query dma_cookie_status() under vc.lock in d350_tx_status() Lee Jones
0 siblings, 1 reply; 2+ messages in thread
From: Lee Jones @ 2026-11-11 21:52 UTC (permalink / raw)
To: lee
Cc: linux-kernel, Akinobu Mita, Alex Smith, Andrey Volkov,
Basavaraj Natikar, Colin Ian King, Dale Farnsworth, dmaengine,
Frank Li, Gary R Hook, Grant Likely, Jacky Huang,
Joachim Eastwood, Linus Walleij, linux-amlogic, linux-arm-kernel,
linux-mips, Paul Cercueil, Peter Pearse, Philipp Stanner,
Raju Rangoju, Robin Murphy, Sanjay R Mehta, Shan-Chun Hung,
Sylvain Munaut, Vinod Koul, Xianwei Zhao,
Zubair Lutfullah Kakakhel
These issues were reported by Sashiko.
Cc: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Alex Smith <alex@alex-smith.me.uk>
Cc: Andrey Volkov <avolkov@varma-el.com>
Cc: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Cc: Colin Ian King <colin.i.king@gmail.com>
Cc: Dale Farnsworth <dfarnsworth@mvista.com>
Cc: dmaengine@vger.kernel.org
Cc: Frank Li <Frank.Li@kernel.org>
Cc: Gary R Hook <gary.hook@amd.com>
Cc: Grant Likely <grant.likely@secretlab.ca>
Cc: Jacky Huang <ychuang3@nuvoton.com>
Cc: Joachim Eastwood <manabian@gmail.com>
Cc: Linus Walleij <linusw@kernel.org>
Cc: linux-amlogic@lists.infradead.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-mips@vger.kernel.org
Cc: Paul Cercueil <paul@crapouillou.net>
Cc: Peter Pearse <peter.pearse@arm.com>
Cc: Philipp Stanner <pstanner@redhat.com>
Cc: Raju Rangoju <Raju.Rangoju@amd.com>
Cc: Robin Murphy <robin.murphy@arm.com>
Cc: Sanjay R Mehta <sanju.mehta@amd.com>
Cc: Shan-Chun Hung <schung@nuvoton.com>
Cc: Sylvain Munaut <tnt@246tNt.com>
Cc: Vinod Koul <vkoul@kernel.org>
Cc: Xianwei Zhao <xianwei.zhao@amlogic.com>
Cc: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
Lee Jones (10):
dmaengine: pl08x: Defer OF DMA controller registration until slave
setup
dmaengine: ae4dma: Unregister DMA engine in ae4_pci_remove()
dmaengine: ptdma: Unmap descriptor in pt_do_cleanup()
dmaengine: ptdma: Remove completed descriptor under vc.lock in
pt_cmd_callback_work()
dmaengine: amlogic: Destroy free_wq after devres DMA device
unregistration
dmaengine: arm-dma350: Query dma_cookie_status() under vc.lock in
d350_tx_status()
dmaengine: bestcomm: Defer publishing bcom_eng until initialisation
completes
dmaengine: bestcomm: Check rh_create() return value in
bcom_sram_init()
dmaengine: jz4780: Fix descriptor cleanup on hwdesc setup failure
dmaengine: dmatest: Avoid unsigned underflow in min_odd()
drivers/dma/amba-pl08x.c | 23 +++++++++
drivers/dma/amd/ae4dma/ae4dma-pci.c | 1 +
drivers/dma/amd/ptdma/ptdma-dmaengine.c | 4 +-
drivers/dma/amlogic-dma.c | 3 +-
drivers/dma/arm-dma350.c | 3 +-
drivers/dma/bestcomm/bestcomm.c | 69 +++++++++++++------------
drivers/dma/bestcomm/sram.c | 6 +++
drivers/dma/dma-jz4780.c | 5 +-
drivers/dma/dmatest.c | 6 +++
9 files changed, 80 insertions(+), 40 deletions(-)
--
2.56.0.567.gdb80ae8cd5-goog
^ permalink raw reply [flat|nested] 2+ messages in thread* [PATCH 06/10] dmaengine: arm-dma350: Query dma_cookie_status() under vc.lock in d350_tx_status()
2026-11-11 21:52 [PATCH 00/10] dmaengine: Fix teardown races, resource leaks, and error handling Lee Jones
@ 2026-11-11 21:52 ` Lee Jones
0 siblings, 0 replies; 2+ messages in thread
From: Lee Jones @ 2026-11-11 21:52 UTC (permalink / raw)
To: lee, Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li,
Robin Murphy, linux-arm-kernel, dmaengine, linux-kernel
Cc: stable
Calling dma_cookie_status() before acquiring dch->vc.lock in
d350_tx_status() races with d350_irq() completing the active descriptor
and starting the next queued transfer, causing d350_tx_status() to
observe a stale DMA_IN_PROGRESS status and falsely return DMA_ERROR.
Move the dma_cookie_status() call inside the dch->vc.lock critical
section.
Fixes: 5d099706449d ("dmaengine: Add Arm DMA-350 driver")
Closes: https://sashiko.dev/#/bug/linux-524816d7-ed1c-4f2b-b4c3-65a7e8bb45a3
Cc: stable@vger.kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
---
drivers/dma/arm-dma350.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/dma/arm-dma350.c b/drivers/dma/arm-dma350.c
index 52f5242ea332..8c1725588f1d 100644
--- a/drivers/dma/arm-dma350.c
+++ b/drivers/dma/arm-dma350.c
@@ -381,9 +381,8 @@ static enum dma_status d350_tx_status(struct dma_chan *chan, dma_cookie_t cookie
unsigned long flags;
u32 residue = 0;
+ spin_lock_irqsave(&dch->vc.lock, flags);
status = dma_cookie_status(chan, cookie, state);
-
- spin_lock_irqsave(&dch->vc.lock, flags);
if (cookie == dch->cookie) {
status = dch->status;
if (status == DMA_IN_PROGRESS || status == DMA_PAUSED)
--
2.56.0.567.gdb80ae8cd5-goog
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-11-11 21:54 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-11 21:52 [PATCH 00/10] dmaengine: Fix teardown races, resource leaks, and error handling Lee Jones
2026-11-11 21:52 ` [PATCH 06/10] dmaengine: arm-dma350: Query dma_cookie_status() under vc.lock in d350_tx_status() Lee Jones
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox