95926035b1
The emu10k1 voice allocator takes voice_lock spinlock. When there is no empty stream available, it tries to release a voice used by synth, and calls get_synth_voice. The callback function, snd_emu10k1_synth_get_voice(), however, also takes the voice_lock, thus it deadlocks. The fix is simply removing the voice_lock holds in snd_emu10k1_synth_get_voice(), as this is always called in the spinlock context. Reported-and-tested-by: Arthur Marsh <arthur.marsh@internode.on.net> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de> |
||
---|---|---|
.. | ||
emu10k1_callback.c | ||
emu10k1_main.c | ||
emu10k1_patch.c | ||
emu10k1_synth_local.h | ||
emu10k1_synth.c | ||
emu10k1.c | ||
emu10k1x.c | ||
emufx.c | ||
emumixer.c | ||
emumpu401.c | ||
emupcm.c | ||
emuproc.c | ||
io.c | ||
irq.c | ||
Makefile | ||
memory.c | ||
p16v.c | ||
p16v.h | ||
p17v.h | ||
timer.c | ||
tina2.h | ||
voice.c |