aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2007-02-07 08:07:08 -0500
committerJaroslav Kysela <perex@suse.cz>2007-02-09 03:03:58 -0500
commit6116ea0741abf8f1ef9d93642d985f91c58ff6bf (patch)
treef65c9a099a0448a776bb5daa91af590cf3b06008
parent2594d960793f13582c0730a99c5396cded7cf9d9 (diff)
[ALSA] Fix possible deadlocks in sequencer at removal of ports
Fix possible rwsem deadlocks in sequencer code at removal of sequencer ports. The list_lock of port group can be double locked. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
-rw-r--r--sound/core/seq/seq_ports.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/core/seq/seq_ports.c b/sound/core/seq/seq_ports.c
index d88153438d69..eefd1cf872b4 100644
--- a/sound/core/seq/seq_ports.c
+++ b/sound/core/seq/seq_ports.c
@@ -245,9 +245,9 @@ static void clear_subscriber_list(struct snd_seq_client *client,
245 list_del(&subs->dest_list); 245 list_del(&subs->dest_list);
246 else 246 else
247 list_del(&subs->src_list); 247 list_del(&subs->src_list);
248 up_write(&agrp->list_mutex);
248 unsubscribe_port(c, aport, agrp, &subs->info, 1); 249 unsubscribe_port(c, aport, agrp, &subs->info, 1);
249 kfree(subs); 250 kfree(subs);
250 up_write(&agrp->list_mutex);
251 snd_seq_port_unlock(aport); 251 snd_seq_port_unlock(aport);
252 snd_seq_client_unlock(c); 252 snd_seq_client_unlock(c);
253 } 253 }