summaryrefslogtreecommitdiffstats
path: root/sound/soc/soc-pcm.c
diff options
context:
space:
mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2020-10-01 03:32:48 +0200
committerMark Brown <broonie@kernel.org>2020-10-01 21:28:18 +0200
commitcb2fce94c84e2c2798dca45aa00d1e03294fab95 (patch)
tree48833a217f4774c575e87c3240852c12a120571f /sound/soc/soc-pcm.c
parentASoC: tegra: trimslice.c: use devm_snd_soc_register_card() (diff)
downloadlinux-cb2fce94c84e2c2798dca45aa00d1e03294fab95.tar.xz
linux-cb2fce94c84e2c2798dca45aa00d1e03294fab95.zip
ASoC: soc-pcm: ignore un-needed mutex_unlock() case on soc_pcm_open()
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>
Diffstat (limited to 'sound/soc/soc-pcm.c')
-rw-r--r--sound/soc/soc-pcm.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index 09e8d703a502..5d538520e2cf 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -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);