summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStas Sergeev <stsp@aknet.ru>2008-03-12 13:12:15 +0100
committerTakashi Iwai <tiwai@suse.de>2008-04-24 12:00:24 +0200
commit1bc1f30565b561bafc51725fce336aec59029437 (patch)
tree2bde6214d669f84dc0ae73b1d1b1259090190f41
parentbb9f76cd5909b9da6b4d31b55a4086cc35614fe0 (diff)
downloadlwn-1bc1f30565b561bafc51725fce336aec59029437.tar.gz
lwn-1bc1f30565b561bafc51725fce336aec59029437.zip
[ALSA] pcsp: locking fix
pcsp: locking fix. Signed-off-by: Stas Sergeev <stsp@aknet.ru> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/drivers/pcsp/pcsp.c5
-rw-r--r--sound/drivers/pcsp/pcsp_lib.c2
2 files changed, 4 insertions, 3 deletions
diff --git a/sound/drivers/pcsp/pcsp.c b/sound/drivers/pcsp/pcsp.c
index 547005cb0942..ac57e87d01bc 100644
--- a/sound/drivers/pcsp/pcsp.c
+++ b/sound/drivers/pcsp/pcsp.c
@@ -191,11 +191,10 @@ static int __devexit pcsp_remove(struct platform_device *dev)
static void pcsp_stop_beep(struct snd_pcsp *chip)
{
- unsigned long flags;
- spin_lock_irqsave(&chip->substream_lock, flags);
+ spin_lock_irq(&chip->substream_lock);
if (!chip->playback_substream)
pcspkr_stop_sound();
- spin_unlock_irqrestore(&chip->substream_lock, flags);
+ spin_unlock_irq(&chip->substream_lock);
}
static int pcsp_suspend(struct platform_device *dev, pm_message_t state)
diff --git a/sound/drivers/pcsp/pcsp_lib.c b/sound/drivers/pcsp/pcsp_lib.c
index a302756eac7c..54253e9b4b02 100644
--- a/sound/drivers/pcsp/pcsp_lib.c
+++ b/sound/drivers/pcsp/pcsp_lib.c
@@ -305,7 +305,9 @@ static int snd_pcsp_playback_open(struct snd_pcm_substream *substream)
return -EBUSY;
}
runtime->hw = snd_pcsp_playback;
+ spin_lock_irq(&chip->substream_lock);
chip->playback_substream = substream;
+ spin_unlock_irq(&chip->substream_lock);
return 0;
}