diff options
author | Takashi Iwai <tiwai@suse.de> | 2007-02-07 08:07:08 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2007-02-09 03:03:58 -0500 |
commit | 6116ea0741abf8f1ef9d93642d985f91c58ff6bf (patch) | |
tree | f65c9a099a0448a776bb5daa91af590cf3b06008 | |
parent | 2594d960793f13582c0730a99c5396cded7cf9d9 (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.c | 2 |
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 | } |