[Linux-stm32] [PATCH] spi: stm32: fix rx DMA request error handling

Amelie Delaunay amelie.delaunay at foss.st.com
Fri Feb 13 00:51:13 PST 2026


On 2/12/26 12:49, Alain Volmat wrote:
> Avoid trying to release the RX DMA channel when an error occurs
> during RX dma_request_chan() call. Instead, jump directly to
> release the TX channel, if applicable.
> 
> Reported-by: Dan Carpenter <dan.carpenter at linaro.org>
> Closes: https://lore.kernel.org/linux-spi/aYXvY6NH7OlZ-OAF@stanley.mountain/T/#u
> Signed-off-by: Alain Volmat <alain.volmat at foss.st.com>

Reviewed-by: Amelie Delaunay <amelie.delaunay at foss.st.com>

Thank you, Dan, for reporting the issue, and Alain for providing the patch.

Regards,
Amelie

> ---
>   drivers/spi/spi-stm32.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/spi/spi-stm32.c b/drivers/spi/spi-stm32.c
> index b99de8c4cc99..c9442326782c 100644
> --- a/drivers/spi/spi-stm32.c
> +++ b/drivers/spi/spi-stm32.c
> @@ -2502,7 +2502,7 @@ static int stm32_spi_probe(struct platform_device *pdev)
>   			spi->dma_rx = NULL;
>   		} else {
>   			dev_err_probe(&pdev->dev, ret, "failed to request rx dma channel\n");
> -			goto err_dma_release;
> +			goto err_dma_tx_release;
>   		}
>   	} else {
>   		ctrl->dma_rx = spi->dma_rx;
> @@ -2571,11 +2571,11 @@ static int stm32_spi_probe(struct platform_device *pdev)
>   	if (spi->sram_pool)
>   		gen_pool_free(spi->sram_pool, (unsigned long)spi->sram_rx_buf,
>   			      spi->sram_rx_buf_size);
> -err_dma_release:
> -	if (spi->dma_tx)
> -		dma_release_channel(spi->dma_tx);
>   	if (spi->dma_rx)
>   		dma_release_channel(spi->dma_rx);
> +err_dma_tx_release:
> +	if (spi->dma_tx)
> +		dma_release_channel(spi->dma_tx);
>   err_clk_disable:
>   	clk_disable_unprepare(spi->clk);
>   
> 
> ---
> base-commit: f921571df917408594a9039ed450859f3bf9cc2e
> change-id: 20260211-spi-stm32-fix-dma-rx-release-4bbbfdece8ad
> 
> Best regards,




More information about the linux-arm-kernel mailing list