android_kernel_samsung_msm8976/sound/pci/emu10k1
Takashi Iwai 8205fae0f0 ALSA: emu10k1: Fix deadlock in synth voice lookup
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>
2014-10-30 09:35:13 -07:00
..
emu10k1.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
emu10k1_callback.c ALSA: emu10k1: Fix deadlock in synth voice lookup 2014-10-30 09:35:13 -07:00
emu10k1_main.c ALSA: emu10k1: Fix dock firmware loading 2013-04-24 08:11:49 +02:00
emu10k1_patch.c treewide: fix typo of "suppport" in various comments 2012-11-19 14:13:52 +01:00
emu10k1_synth.c sound: Add module.h to the previously silent sound users 2011-10-31 19:31:21 -04:00
emu10k1_synth_local.h
emu10k1x.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
emufx.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
emumixer.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
emumpu401.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
emupcm.c ALSA: emu10k1: Allow to switch hardware sampe rate on EMU 2013-02-25 13:39:51 +01:00
emuproc.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
io.c sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed 2011-10-31 19:31:22 -04:00
irq.c
Makefile
memory.c ALSA: emu10k1: use list_move_tail instead of list_del/list_add_tail 2012-09-05 09:15:12 +02:00
p16v.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
p16v.h Fix common misspellings 2011-03-31 11:26:23 -03:00
p17v.h
timer.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
tina2.h
voice.c sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed 2011-10-31 19:31:22 -04:00