提交 7507e8da 编写于 作者: B Borislav Petkov 提交者: Jaroslav Kysela

[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: NBorislav Petkov <bbpetkov@yahoo.de>
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
Signed-off-by: NJaroslav Kysela <perex@perex.cz>
上级 31127f2e
...@@ -93,15 +93,16 @@ static int snd_ctl_open(struct inode *inode, struct file *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) 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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册