summaryrefslogtreecommitdiff
path: root/drivers/dma
diff options
context:
space:
mode:
authorPeter Ujfalusi <peter.ujfalusi@ti.com>2020-08-06 13:49:28 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-09-09 19:12:23 +0200
commit89cb604c422694afb3ffdc39d51705e6091eb57b (patch)
tree50f51c7467d3a0f0ffb5e2748f8ffdb5319612c5 /drivers/dma
parent1a89606baf3118a3afd970f9e250d619e91a2459 (diff)
downloadlinux-89cb604c422694afb3ffdc39d51705e6091eb57b.tar.gz
linux-89cb604c422694afb3ffdc39d51705e6091eb57b.tar.bz2
linux-89cb604c422694afb3ffdc39d51705e6091eb57b.zip
dmaengine: of-dma: Fix of_dma_router_xlate's of_dma_xlate handling
[ Upstream commit 5b2aa9f918f6837ae943557f8cec02c34fcf80e7 ] of_dma_xlate callback can return ERR_PTR as well NULL in case of failure. If error code is returned (not NULL) then the route should be released and the router should not be registered for the channel. Fixes: 56f13c0d9524c ("dmaengine: of_dma: Support for DMA routers") Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Link: https://lore.kernel.org/r/20200806104928.25975-1-peter.ujfalusi@ti.com Signed-off-by: Vinod Koul <vkoul@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/of-dma.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/dma/of-dma.c b/drivers/dma/of-dma.c
index c2d779daa4b5..4bbf4172b9bf 100644
--- a/drivers/dma/of-dma.c
+++ b/drivers/dma/of-dma.c
@@ -69,12 +69,12 @@ static struct dma_chan *of_dma_router_xlate(struct of_phandle_args *dma_spec,
return NULL;
chan = ofdma_target->of_dma_xlate(&dma_spec_target, ofdma_target);
- if (chan) {
- chan->router = ofdma->dma_router;
- chan->route_data = route_data;
- } else {
+ if (IS_ERR_OR_NULL(chan)) {
ofdma->dma_router->route_free(ofdma->dma_router->dev,
route_data);
+ } else {
+ chan->router = ofdma->dma_router;
+ chan->route_data = route_data;
}
/*