]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ASoC: Revert "ASoC: soc-generic-dmaengine-pcm: Fix error handling"
authorFabio Estevam <fabio.estevam@nxp.com>
Mon, 26 Feb 2018 18:55:25 +0000 (15:55 -0300)
committerMark Brown <broonie@kernel.org>
Mon, 26 Feb 2018 19:59:31 +0000 (19:59 +0000)
This reverts commit f91b1e73ccde71d4bc69ae10d475196df38844ab.

As explained by Lars-Peter Clausen:

"This creates a resource leak. dmaengine_pcm_request_chan_of() requests
bothtransmit and receive channels. It might return with an error if one
of them fails, but the other one succeeded. In this case we need to call
dmaengine_pcm_release_chan() to free the requested channel"

So revert the commit.

Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-generic-dmaengine-pcm.c

index 567fbdfd1ca957f2b96d68988ebd6afec236d18f..56a541b9ff9e2340eabc996c803a9b3a7427853c 100644 (file)
@@ -504,7 +504,7 @@ int snd_dmaengine_pcm_register(struct device *dev,
 
        ret = dmaengine_pcm_request_chan_of(pcm, dev, config);
        if (ret)
-               goto err_free_pcm;
+               goto err_free_dma;
 
        if (config && config->process)
                ret = snd_soc_add_component(dev, &pcm->component,
@@ -520,7 +520,6 @@ int snd_dmaengine_pcm_register(struct device *dev,
 
 err_free_dma:
        dmaengine_pcm_release_chan(pcm);
-err_free_pcm:
        kfree(pcm);
        return ret;
 }