[ALSA] sound/core/control.c: hard-irq-safe -> hard-irq-unsafe lock warning
authorBorislav Petkov <bbpetkov@yahoo.de>
Mon, 22 Oct 2007 15:11:09 +0000 (17:11 +0200)
committerJaroslav Kysela <perex@perex.cz>
Tue, 23 Oct 2007 06:07:55 +0000 (08:07 +0200)
The lock grabbed in snd_ctl_empty_read_queue() is hardirq-unsafe but we hold
an hardirq-safe one already, so make the &ctl->read_lock also hard-irq-safe.

Signed-off-by: Borislav Petkov <bbpetkov@yahoo.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
sound/core/control.c

index 4c3aa8e10378bd306763dba42f16b6b9a564ebd5..df0774c76f6fc4eba16eb5abc0863ac01bbcedbc 100644 (file)
@@ -93,15 +93,16 @@ static int snd_ctl_open(struct inode *inode, struct file *file)
 
 static void snd_ctl_empty_read_queue(struct snd_ctl_file * ctl)
 {
+       unsigned long flags;
        struct snd_kctl_event *cread;
        
-       spin_lock(&ctl->read_lock);
+       spin_lock_irqsave(&ctl->read_lock, flags);
        while (!list_empty(&ctl->events)) {
                cread = snd_kctl_event(ctl->events.next);
                list_del(&cread->list);
                kfree(cread);
        }
-       spin_unlock(&ctl->read_lock);
+       spin_unlock_irqrestore(&ctl->read_lock, flags);
 }
 
 static int snd_ctl_release(struct inode *inode, struct file *file)