ASoC: hdmi-codec: unlock the device on startup errors
authorJerome Brunet <jbrunet@baylibre.com>
Mon, 29 Apr 2019 13:29:39 +0000 (15:29 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 31 May 2019 13:48:14 +0000 (06:48 -0700)
[ Upstream commit 30180e8436046344b12813dc954b2e01dfdcd22d ]

If the hdmi codec startup fails, it should clear the current_substream
pointer to free the device. This is properly done for the audio_startup()
callback but for snd_pcm_hw_constraint_eld().

Make sure the pointer cleared if an error is reported.

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/codecs/hdmi-codec.c

index 90b5948..cba5b5a 100644 (file)
@@ -137,8 +137,12 @@ static int hdmi_codec_startup(struct snd_pcm_substream *substream,
                if (!ret) {
                        ret = snd_pcm_hw_constraint_eld(substream->runtime,
                                                        hcp->eld);
-                       if (ret)
+                       if (ret) {
+                               mutex_lock(&hcp->current_stream_lock);
+                               hcp->current_stream = NULL;
+                               mutex_unlock(&hcp->current_stream_lock);
                                return ret;
+                       }
                }
        }
        return 0;