diff options
| author | Johan Hovold <johan@kernel.org> | 2025-11-17 17:12:53 +0100 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-01-23 11:21:34 +0100 |
| commit | f45b1d8bf9d0a9b45ebadcb66b6f93017b10f7a1 (patch) | |
| tree | 5d40630dd9ae2482fd8ca0f8695ee944fbb3e621 /drivers/dma | |
| parent | 3ef52d31cce8ba816739085a61efe07b63c6cf27 (diff) | |
| download | linux-f45b1d8bf9d0a9b45ebadcb66b6f93017b10f7a1.tar.gz linux-f45b1d8bf9d0a9b45ebadcb66b6f93017b10f7a1.tar.bz2 linux-f45b1d8bf9d0a9b45ebadcb66b6f93017b10f7a1.zip | |
dmaengine: stm32: dmamux: fix OF node leak on route allocation failure
commit b1b590a590af13ded598e70f0b72bc1e515787a1 upstream.
Make sure to drop the reference taken to the DMA master OF node also on
late route allocation failures.
Fixes: df7e762db5f6 ("dmaengine: Add STM32 DMAMUX driver")
Cc: stable@vger.kernel.org # 4.15
Cc: Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Reviewed-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
Link: https://patch.msgid.link/20251117161258.10679-12-johan@kernel.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/dma')
| -rw-r--r-- | drivers/dma/stm32/stm32-dmamux.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/dma/stm32/stm32-dmamux.c b/drivers/dma/stm32/stm32-dmamux.c index 791179760782..2bd218dbabbb 100644 --- a/drivers/dma/stm32/stm32-dmamux.c +++ b/drivers/dma/stm32/stm32-dmamux.c @@ -143,7 +143,7 @@ static void *stm32_dmamux_route_allocate(struct of_phandle_args *dma_spec, ret = pm_runtime_resume_and_get(&pdev->dev); if (ret < 0) { spin_unlock_irqrestore(&dmamux->lock, flags); - goto error; + goto err_put_dma_spec_np; } spin_unlock_irqrestore(&dmamux->lock, flags); @@ -165,6 +165,8 @@ static void *stm32_dmamux_route_allocate(struct of_phandle_args *dma_spec, return mux; +err_put_dma_spec_np: + of_node_put(dma_spec->np); error: clear_bit(mux->chan_id, dmamux->dma_inuse); |
