Skip to contentSkip to conversation

Patch "ALSA: emux: Fix mutex deadlock at unloading" has been added to the 3.10-stable tree

PATCH [email protected] 1 participant 1 message May 9, 2015

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

ALSA: emux: Fix mutex deadlock at unloading

to the 3.10-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
alsa-emux-fix-mutex-deadlock-at-unloading.patch
and it can be found in the queue-3.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 07b0e5d49d227e3950cb13a3e8caf248ef2a310e Mon Sep 17 00:00:00 2001

From: Takashi Iwai <[email protected]>
Date: Mon, 27 Apr 2015 14:50:39 +0200
Subject: ALSA: emux: Fix mutex deadlock at unloading

From: Takashi Iwai <[email protected]>

commit 07b0e5d49d227e3950cb13a3e8caf248ef2a310e upstream.

The emux-synth driver has a possible AB/BA mutex deadlock at unloading the emu10k1 driver:

snd_emux_free() ->

    snd_emux_detach_seq(): mutex_lock(&emu->register_mutex) ->
      snd_seq_delete_kernel_client() ->
        snd_seq_free_client(): mutex_lock(&register_mutex)

snd_seq_release() ->

    snd_seq_free_client(): mutex_lock(&register_mutex) ->
      snd_seq_delete_all_ports() ->
        snd_emux_unuse(): mutex_lock(&emu->register_mutex)

Basically snd_emux_detach_seq() doesn't need a protection of emu->register_mutex as it's already being unregistered. So, we can get rid of this for avoiding the deadlock.

---
 sound/synth/emux/emux_seq.c |    2 --
 1 file changed, 2 deletions(-)
sound/synth/emux/emux_seq.c +0 -2
@@ -124,12 +124,10 @@ snd_emux_detach_seq(struct snd_emux *emu
 	if (emu->voices)
 		snd_emux_terminate_all(emu);
 		
-	mutex_lock(&emu->register_mutex);
 	if (emu->client >= 0) {
 		snd_seq_delete_kernel_client(emu->client);
 		emu->client = -1;
 	}
-	mutex_unlock(&emu->register_mutex);
 }
 
 

Patches currently in stable-queue which might be from [email protected] are

queue-3.10/alsa-emux-fix-mutex-deadlock-at-unloading.patch queue-3.10/alsa-emu10k1-emu10k2-32-bit-dma-mode.patch queue-3.10/alsa-emux-fix-mutex-deadlock-in-oss-emulation.patch queue-3.10/alsa-hda-fix-mute-led-fixed-mode.patch queue-3.10/alsa-emu10k1-fix-card-shortname-string-buffer-overflow.patch