ASoC: rsnd: don't call unneeded of_node_put() on dma.c
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 25 Oct 2016 00:37:18 +0000 (00:37 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 25 Oct 2016 14:02:43 +0000 (15:02 +0100)
Current rsnd_dmaen_start() is calling of_node_put() for np,
but it is not needed if it goes through this loop.
This patch tidyup it

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sh/rcar/dma.c

index c85a551113927e320a2d19252f45b4ea2449b48d..2f03277146251367014d2a538cc803d0f2b7fb0f 100644 (file)
@@ -143,19 +143,17 @@ static int rsnd_dmaen_start(struct rsnd_mod *mod,
 struct dma_chan *rsnd_dma_request_channel(struct device_node *of_node,
                                          struct rsnd_mod *mod, char *name)
 {
-       struct dma_chan *chan;
+       struct dma_chan *chan = NULL;
        struct device_node *np;
        int i = 0;
 
        for_each_child_of_node(of_node, np) {
-               if (i == rsnd_mod_id(mod))
-                       break;
+               if (i == rsnd_mod_id(mod) && (!chan))
+                       chan = of_dma_request_slave_channel(np, name);
                i++;
        }
 
-       chan = of_dma_request_slave_channel(np, name);
-
-       of_node_put(np);
+       /* It should call of_node_put(), since, it is rsnd_xxx_of_node() */
        of_node_put(of_node);
 
        return chan;