mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-11-01 02:21:16 +00:00
8205fae0f0
commit 95926035b187cc9fee6fb61385b7da9c28123f74 upstream. 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> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
||
---|---|---|
.. | ||
emu10k1.c | ||
emu10k1_callback.c | ||
emu10k1_main.c | ||
emu10k1_patch.c | ||
emu10k1_synth.c | ||
emu10k1_synth_local.h | ||
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 |