summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2010-09-16 22:52:32 +0200
committerTakashi Iwai <tiwai@suse.de>2010-09-16 23:04:38 +0200
commit8699a0b657b43fa6401537dfe345bee7aa8115ec (patch)
tree109968539c7622c5ebda6dcac7bb4df3a8b6350d /sound
parent147fcf1c211f1a87bf4d0711b7e9637f3d6ce080 (diff)
downloadlinux-8699a0b657b43fa6401537dfe345bee7aa8115ec.tar.gz
linux-8699a0b657b43fa6401537dfe345bee7aa8115ec.tar.bz2
linux-8699a0b657b43fa6401537dfe345bee7aa8115ec.zip
ALSA: pcm - Fix unbalanced pm_qos_request
The pm_qos_request isn't freed properly when OSS PCM emulation is used because it skips snd_pcm_hw_free() call but directly releases the stream. This resulted in Oops later. Tested-by: Simon Kirby <sim@hostway.ca> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/core/pcm_native.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 134fc6c2e08d..d4eb2ef80784 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -1992,6 +1992,8 @@ void snd_pcm_release_substream(struct snd_pcm_substream *substream)
substream->ops->close(substream);
substream->hw_opened = 0;
}
+ if (pm_qos_request_active(&substream->latency_pm_qos_req))
+ pm_qos_remove_request(&substream->latency_pm_qos_req);
if (substream->pcm_release) {
substream->pcm_release(substream);
substream->pcm_release = NULL;