ASoC: davinci-mcasp: Fix an error handling path in 'davinci_mcasp_probe()'
authorChristophe Jaillet <christophe.jaillet@wanadoo.fr>
Sat, 16 Sep 2017 05:40:29 +0000 (07:40 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 19 Sep 2017 12:29:19 +0000 (13:29 +0100)
All error handling paths in this function 'goto err' except this one.

If one of the 2 previous memory allocations fails, we should go through
the existing error handling path. Otherwise there is an unbalanced
pm_runtime_enable()/pm_runtime_disable().

Fixes: dd55ff8346a9 ("ASoC: davinci-mcasp: Add set_tdm_slots() support")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/davinci/davinci-mcasp.c

index f395bbc7c354549d089ecfbb8a633e0d4e2aadac..23b0da7df1f28a0a71b948f50a665869ae378969 100644 (file)
@@ -1982,8 +1982,10 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
                             GFP_KERNEL);
 
        if (!mcasp->chconstr[SNDRV_PCM_STREAM_PLAYBACK].list ||
-           !mcasp->chconstr[SNDRV_PCM_STREAM_CAPTURE].list)
-               return -ENOMEM;
+           !mcasp->chconstr[SNDRV_PCM_STREAM_CAPTURE].list) {
+               ret = -ENOMEM;
+               goto err;
+       }
 
        ret = davinci_mcasp_set_ch_constraints(mcasp);
        if (ret)