ALSA: x86: Properly manage PCM substream lifetype
authorTakashi Iwai <tiwai@suse.de>
Thu, 2 Feb 2017 12:00:12 +0000 (13:00 +0100)
committerTakashi Iwai <tiwai@suse.de>
Fri, 3 Feb 2017 16:36:13 +0000 (17:36 +0100)
commit313d9f28c1d5e0254ca16f2df0f1b737e30c0993
treef028fc66be246aa44c34f016ad7af7d0e7791ffe
parent7d9e79869ba2a8a552f4c2cf1df44cf9a0822f02
ALSA: x86: Properly manage PCM substream lifetype

The PCM substream is referred not only in the PCM callbacks but also
in the irq handler and in the hotplug/unplug codes.  The latter code
paths don't take the PCM lock, thus the PCM may be released
unexpectedly while calling PCM helper functions or accessing
pcm->runtime fields.

This patch implements a simple refcount to assure the PCM substream
accessibility while the other codes are accessing.  It needed some
code refactoring in the relevant functions for avoiding the doubly
spinlocks.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/x86/intel_hdmi_audio.c
sound/x86/intel_hdmi_audio.h