diff options
author | Takashi Iwai <tiwai@suse.de> | 2005-11-18 12:52:14 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-01-03 06:29:08 -0500 |
commit | b32425ac93370e1ba5556110e662f896b2e143b3 (patch) | |
tree | c5837ee90c16d2aa358e399f2ad79ca4eb770e94 /sound/drivers/mpu401 | |
parent | 2eb061f41cf74f829bfe90a9c79c765172be9f0b (diff) |
[ALSA] Fix possible races in timer callbacks
Fix possible races in timer callbacks.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/drivers/mpu401')
-rw-r--r-- | sound/drivers/mpu401/mpu401_uart.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sound/drivers/mpu401/mpu401_uart.c b/sound/drivers/mpu401/mpu401_uart.c index ee67b522d259..8687ae3c66b8 100644 --- a/sound/drivers/mpu401/mpu401_uart.c +++ b/sound/drivers/mpu401/mpu401_uart.c | |||
@@ -133,12 +133,13 @@ irqreturn_t snd_mpu401_uart_interrupt(int irq, void *dev_id, struct pt_regs *reg | |||
133 | static void snd_mpu401_uart_timer(unsigned long data) | 133 | static void snd_mpu401_uart_timer(unsigned long data) |
134 | { | 134 | { |
135 | struct snd_mpu401 *mpu = (struct snd_mpu401 *)data; | 135 | struct snd_mpu401 *mpu = (struct snd_mpu401 *)data; |
136 | unsigned long flags; | ||
136 | 137 | ||
137 | spin_lock(&mpu->timer_lock); | 138 | spin_lock_irqsave(&mpu->timer_lock, flags); |
138 | /*mpu->mode |= MPU401_MODE_TIMER;*/ | 139 | /*mpu->mode |= MPU401_MODE_TIMER;*/ |
139 | mpu->timer.expires = 1 + jiffies; | 140 | mpu->timer.expires = 1 + jiffies; |
140 | add_timer(&mpu->timer); | 141 | add_timer(&mpu->timer); |
141 | spin_unlock(&mpu->timer_lock); | 142 | spin_unlock_irqrestore(&mpu->timer_lock, flags); |
142 | if (mpu->rmidi) | 143 | if (mpu->rmidi) |
143 | _snd_mpu401_uart_interrupt(mpu); | 144 | _snd_mpu401_uart_interrupt(mpu); |
144 | } | 145 | } |