ASoC: soc-pcm: ignore un-needed mutex_unlock() case on soc_pcm_open()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Thu, 1 Oct 2020 01:32:48 +0000 (10:32 +0900)
committerMark Brown <broonie@kernel.org>
Thu, 1 Oct 2020 19:28:18 +0000 (20:28 +0100)
commit 140a4532cdb8c ("ASoC: soc-pcm: add soc_pcm_clean() and call it
from soc_pcm_open/close()") switch to call soc_pcm_clean() on
soc_pcm_open() when rollback case.

But, it uses "goto err" (A) *before* mutex_lock() (B) when error of
snd_soc_pcm_component_pm_runtime_get().
The mutex_unlock() (C) is not needed in such case. This patch fix it.

static int soc_pcm_open(...)
{
...
ret = snd_soc_pcm_component_pm_runtime_get(rtd, substream);
if (ret < 0)
(A) goto err;

(B) mutex_lock_nested(...);
...
err:
(C) mutex_unlock(..);
...
}

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87k0waag44.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-pcm.c

index 09e8d70..5d53852 100644 (file)
@@ -706,7 +706,7 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
 
        ret = snd_soc_pcm_component_pm_runtime_get(rtd, substream);
        if (ret < 0)
-               goto err;
+               goto pm_err;
 
        mutex_lock_nested(&rtd->card->pcm_mutex, rtd->card->pcm_subclass);
 
@@ -786,7 +786,7 @@ dynamic:
        snd_soc_runtime_activate(rtd, substream->stream);
 err:
        mutex_unlock(&rtd->card->pcm_mutex);
-
+pm_err:
        if (ret < 0)
                soc_pcm_clean(substream, 1);