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)
committerMark Brown <broonie@kernel.org>
Fri, 3 May 2019 05:50:47 +0000 (14:50 +0900)
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>
sound/soc/codecs/hdmi-codec.c

index 35df73e..fb2f0ac 100644 (file)
@@ -439,8 +439,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;
+                       }
                }
                /* Select chmap supported */
                hdmi_codec_eld_chmap(hcp);