]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
spi: stm32-ospi: Fix DMA channel leak on stm32_ospi_dma_setup() failure
authorFelix Gu <ustc.gu@gmail.com>
Sat, 28 Mar 2026 16:07:07 +0000 (00:07 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 30 Mar 2026 12:46:30 +0000 (13:46 +0100)
When stm32_ospi_dma_setup() fails, the DMA channels allocated by
stm32_ospi_get_resources() were never released. Add proper cleanup
in the error path.

Fixes: e35a7607e05d ("spi: stm32-ospi: Set DMA maxburst dynamically")
Signed-off-by: Felix Gu <ustc.gu@gmail.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
Link: https://patch.msgid.link/20260329-stm32-ospi-v1-2-142122466412@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-stm32-ospi.c

index c9f92e85253ffc894b07135579673bdd2eb7f105..38405f8f547f56b59a35950f6ecd4b284d56ef4c 100644 (file)
@@ -928,7 +928,7 @@ static int stm32_ospi_probe(struct platform_device *pdev)
        dma_cfg.dst_addr = ospi->regs_phys_base + OSPI_DR;
        ret = stm32_ospi_dma_setup(ospi, &dma_cfg);
        if (ret)
-               return ret;
+               goto err_dma_free;
 
        mutex_init(&ospi->lock);
 
@@ -980,6 +980,7 @@ err_pm_resume:
 err_pm_enable:
        pm_runtime_force_suspend(ospi->dev);
        mutex_destroy(&ospi->lock);
+err_dma_free:
        if (ospi->dma_chtx)
                dma_release_channel(ospi->dma_chtx);
        if (ospi->dma_chrx)