Re: [PATCH] spi: ep93xx: fix error pointer deref after DMA setup failure
From: Nikita Shubin
Date: Tue May 12 2026 - 07:36:24 EST
On Tue, 2026-05-12 at 09:48 +0200, Johan Hovold wrote:
> The driver falls back to PIO mode if DMA setup fails during probe.
>
> Make sure to the clear the DMA channel pointers on setup failure to
> avoid dereferencing an error pointer on later probe errors or driver
> unbind.
>
> This issue was flagged by Sashiko when reviewing a devres allocation
> conversion patch.
>
> Fixes: e79e7c2df627 ("spi: ep93xx: add DT support for Cirrus EP93xx")
> Link:
> https://sashiko.dev/#/patchset/20260429091333.165363-1-johan%40kernel.org?part=10
> Cc: stable@xxxxxxxxxxxxxxx # 6.12
> Cc: Nikita Shubin <nikita.shubin@xxxxxxxxxxx>
> Signed-off-by: Johan Hovold <johan@xxxxxxxxxx>
Acked-by: Nikita Shubin <nikita.shubin@xxxxxxxxxxx>
> ---
> drivers/spi/spi-ep93xx.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/spi/spi-ep93xx.c b/drivers/spi/spi-ep93xx.c
> index db50018050e5..f716c9607be4 100644
> --- a/drivers/spi/spi-ep93xx.c
> +++ b/drivers/spi/spi-ep93xx.c
> @@ -582,12 +582,14 @@ static int ep93xx_spi_setup_dma(struct device
> *dev, struct ep93xx_spi *espi)
> espi->dma_rx = dma_request_chan(dev, "rx");
> if (IS_ERR(espi->dma_rx)) {
> ret = dev_err_probe(dev, PTR_ERR(espi->dma_rx), "rx
> DMA setup failed");
> + espi->dma_rx = NULL;
> goto fail_free_page;
> }
>
> espi->dma_tx = dma_request_chan(dev, "tx");
> if (IS_ERR(espi->dma_tx)) {
> ret = dev_err_probe(dev, PTR_ERR(espi->dma_tx), "tx
> DMA setup failed");
> + espi->dma_tx = NULL;
> goto fail_release_rx;
> }
>