Put the stuff in the right order; notification should be at the end of the action. Also dropped a superfluous debug print and incorrect comments. Signed-off-by: Takashi Iwai <tiwai@xxxxxxx> --- sound/x86/intel_hdmi_audio.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/sound/x86/intel_hdmi_audio.c b/sound/x86/intel_hdmi_audio.c index 2ed0a34bc19e..8b6e1c728798 100644 --- a/sound/x86/intel_hdmi_audio.c +++ b/sound/x86/intel_hdmi_audio.c @@ -1374,18 +1374,15 @@ static void had_process_hot_plug(struct snd_intelhad *intelhaddata) __func__, __LINE__); spin_unlock_irq(&intelhaddata->had_spinlock); - /* Safety check */ + had_build_channel_allocation_map(intelhaddata); + + /* Report to above ALSA layer */ substream = had_substream_get(intelhaddata); if (substream) { - dev_dbg(intelhaddata->dev, - "Force to stop the active stream by disconnection\n"); - /* Set runtime->state to hw_params done */ snd_pcm_stop_xrun(substream); had_substream_put(intelhaddata); } - had_build_channel_allocation_map(intelhaddata); - snd_jack_report(intelhaddata->jack, SND_JACK_AVOUT); } @@ -1394,14 +1391,11 @@ static void had_process_hot_unplug(struct snd_intelhad *intelhaddata) { struct snd_pcm_substream *substream; - substream = had_substream_get(intelhaddata); - spin_lock_irq(&intelhaddata->had_spinlock); - if (!intelhaddata->connected) { dev_dbg(intelhaddata->dev, "Device already disconnected\n"); spin_unlock_irq(&intelhaddata->had_spinlock); - goto out; + return; } @@ -1414,16 +1408,17 @@ static void had_process_hot_unplug(struct snd_intelhad *intelhaddata) __func__, __LINE__); spin_unlock_irq(&intelhaddata->had_spinlock); + kfree(intelhaddata->chmap->chmap); + intelhaddata->chmap->chmap = NULL; + /* Report to above ALSA layer */ - if (substream) + substream = had_substream_get(intelhaddata); + if (substream) { snd_pcm_stop_xrun(substream); + had_substream_put(intelhaddata); + } - out: snd_jack_report(intelhaddata->jack, 0); - if (substream) - had_substream_put(intelhaddata); - kfree(intelhaddata->chmap->chmap); - intelhaddata->chmap->chmap = NULL; } /* -- 2.11.1 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel