• Takashi Iwai's avatar
    ALSA: emu10k1: Fix deadlock in synth voice lookup · 95926035
    Takashi Iwai authored
    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: default avatarArthur Marsh <arthur.marsh@internode.on.net>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    95926035
emu10k1_callback.c 14.2 KB