Skip to content

Commit 7fc2c3d

Browse files
outman119broonie
authored andcommitted
spi: rzv2h-rspi: Fix DMA transfer error handling for signal interruption
wait_event_interruptible_timeout() can return a negative error code when interrupted by a signal. The original code treated all non-zero return values as success, which would incorrectly synchronize DMA channels and return 0 instead of propagating the interruption error. Fixes: fa08b56 ("spi: rzv2h-rspi: add support for DMA mode") Signed-off-by: Felix Gu <ustc.gu@gmail.com> Reviewed-by: Cosmin Tanislav <cosmin-gabriel.tanislav.xa@renesas.com> Tested-by: Cosmin Tanislav <cosmin-gabriel.tanislav.xa@renesas.com> Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Link: https://patch.msgid.link/20260627-rspi-v1-1-170c93ee14da@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent eeda4e1 commit 7fc2c3d

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

drivers/spi/spi-rzv2h-rspi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -365,14 +365,14 @@ static int rzv2h_rspi_transfer_dma(struct rzv2h_rspi_priv *rspi,
365365
rzv2h_rspi_clear_all_irqs(rspi);
366366

367367
ret = wait_event_interruptible_timeout(rspi->wait, rspi->dma_callbacked, HZ);
368-
if (ret) {
368+
if (ret > 0) {
369369
dmaengine_synchronize(rspi->controller->dma_tx);
370370
dmaengine_synchronize(rspi->controller->dma_rx);
371371
ret = 0;
372372
} else {
373373
dmaengine_terminate_sync(rspi->controller->dma_tx);
374374
dmaengine_terminate_sync(rspi->controller->dma_rx);
375-
ret = -ETIMEDOUT;
375+
ret = ret ?: -ETIMEDOUT;
376376
}
377377

378378
enable_irq(rspi->irq_rx);

0 commit comments

Comments
 (0)