[ALSA] sound/core/control.c: hard-irq-safe -> hard-irq-unsafe lock warning
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>
This commit is contained in:
committed by
Jaroslav Kysela
parent
31127f2eb9
commit
7507e8da2f
@@ -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)
|
static void snd_ctl_empty_read_queue(struct snd_ctl_file * ctl)
|
||||||
{
|
{
|
||||||
|
unsigned long flags;
|
||||||
struct snd_kctl_event *cread;
|
struct snd_kctl_event *cread;
|
||||||
|
|
||||||
spin_lock(&ctl->read_lock);
|
spin_lock_irqsave(&ctl->read_lock, flags);
|
||||||
while (!list_empty(&ctl->events)) {
|
while (!list_empty(&ctl->events)) {
|
||||||
cread = snd_kctl_event(ctl->events.next);
|
cread = snd_kctl_event(ctl->events.next);
|
||||||
list_del(&cread->list);
|
list_del(&cread->list);
|
||||||
kfree(cread);
|
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)
|
static int snd_ctl_release(struct inode *inode, struct file *file)
|
||||||
|
Reference in New Issue
Block a user