Commit 5b2aa9f9 authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Vinod Koul

dmaengine: of-dma: Fix of_dma_router_xlate's of_dma_xlate handling

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: 56f13c0d ("dmaengine: of_dma: Support for DMA routers")
Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
Link: https://lore.kernel.org/r/20200806104928.25975-1-peter.ujfalusi@ti.comSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent df841b17
...@@ -71,12 +71,12 @@ static struct dma_chan *of_dma_router_xlate(struct of_phandle_args *dma_spec, ...@@ -71,12 +71,12 @@ static struct dma_chan *of_dma_router_xlate(struct of_phandle_args *dma_spec,
return NULL; return NULL;
chan = ofdma_target->of_dma_xlate(&dma_spec_target, ofdma_target); chan = ofdma_target->of_dma_xlate(&dma_spec_target, ofdma_target);
if (chan) { if (IS_ERR_OR_NULL(chan)) {
chan->router = ofdma->dma_router;
chan->route_data = route_data;
} else {
ofdma->dma_router->route_free(ofdma->dma_router->dev, ofdma->dma_router->route_free(ofdma->dma_router->dev,
route_data); route_data);
} else {
chan->router = ofdma->dma_router;
chan->route_data = route_data;
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment