summaryrefslogtreecommitdiff
path: root/sound/x86/intel_hdmi_audio.h
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2017-02-02 15:00:12 +0300
committerTakashi Iwai <tiwai@suse.de>2017-02-03 19:36:13 +0300
commit313d9f28c1d5e0254ca16f2df0f1b737e30c0993 (patch)
treef028fc66be246aa44c34f016ad7af7d0e7791ffe /sound/x86/intel_hdmi_audio.h
parent7d9e79869ba2a8a552f4c2cf1df44cf9a0822f02 (diff)
downloadlinux-313d9f28c1d5e0254ca16f2df0f1b737e30c0993.tar.xz
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>
Diffstat (limited to 'sound/x86/intel_hdmi_audio.h')
-rw-r--r--sound/x86/intel_hdmi_audio.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/x86/intel_hdmi_audio.h b/sound/x86/intel_hdmi_audio.h
index 7bd273ec3275..6e5a1978e9c7 100644
--- a/sound/x86/intel_hdmi_audio.h
+++ b/sound/x86/intel_hdmi_audio.h
@@ -72,9 +72,10 @@
#define AUD_CONFIG_CH_MASK 0x70
struct pcm_stream_info {
- struct snd_pcm_substream *had_substream;
+ struct snd_pcm_substream *substream;
u64 buffer_rendered;
u32 ring_buf_size;
+ int substream_refcount;
};
struct ring_buf_info {