summaryrefslogtreecommitdiff
path: root/sound/synth/emux/emux_synth.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/synth/emux/emux_synth.c')
-rw-r--r--sound/synth/emux/emux_synth.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sound/synth/emux/emux_synth.c b/sound/synth/emux/emux_synth.c
index c387a83a655e..24705d15ebd8 100644
--- a/sound/synth/emux/emux_synth.c
+++ b/sound/synth/emux/emux_synth.c
@@ -205,9 +205,10 @@ void snd_emux_timer_callback(unsigned long data)
{
struct snd_emux *emu = (struct snd_emux *) data;
struct snd_emux_voice *vp;
+ unsigned long flags;
int ch, do_again = 0;
- spin_lock(&emu->voice_lock);
+ spin_lock_irqsave(&emu->voice_lock, flags);
for (ch = 0; ch < emu->max_voices; ch++) {
vp = &emu->voices[ch];
if (vp->state == SNDRV_EMUX_ST_PENDING) {
@@ -225,7 +226,7 @@ void snd_emux_timer_callback(unsigned long data)
emu->timer_active = 1;
} else
emu->timer_active = 0;
- spin_unlock(&emu->voice_lock);
+ spin_unlock_irqrestore(&emu->voice_lock, flags);
}
/*