diff mbox series

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

Message ID 20200806104928.25975-1-peter.ujfalusi@ti.com (mailing list archive)
State Accepted
Headers show
Series dmaengine: of-dma: Fix of_dma_router_xlate's of_dma_xlate handling | expand

Commit Message

Peter Ujfalusi Aug. 6, 2020, 10:49 a.m. UTC
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>
---
 drivers/dma/of-dma.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Vinod Koul Aug. 17, 2020, 5:44 a.m. UTC | #1
On 06-08-20, 13:49, Peter Ujfalusi wrote:
> 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.

Applied, thanks
diff mbox series

Patch

diff --git a/drivers/dma/of-dma.c b/drivers/dma/of-dma.c
index 863f2aaf5c8f..8a4f608904b9 100644
--- a/drivers/dma/of-dma.c
+++ b/drivers/dma/of-dma.c
@@ -71,12 +71,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;
 	}
 
 	/*