snd_ctl_elem_write() calls snd_ctl_notify() under
read_lock(&card->control_rwlock);
But snd_ctl_notify() does a GFP_KERNEL allocation.
Also, snd_ctl_notify() does read_lock_irqsave(&card->control_rwlock, flags);
even though the caller has already taken a read_lock on that lock.
It is not legal to take a read_lock twice in this manner. Because
if another CPU comes in and asks for a write_lock in that window,
deadlock. (I think - there's been some talk about changing the
rwlock implementation so that nested read_locks are safe).
Also, snd_ctl_notify() is performing a GFP_KERNEL allocation
inside spin_lock(&ctl->read_lock);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/