Commit be7ee278 authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela

[ALSA] Fix misuse of __list_add() in seq_ports.c

seq_ports.c::snd_seq_delete_all_ports() uses __list_add() to replace the
whole list entries.  This results in BUG() with recent FC5 kernel due to
a sanity check in __list_add().
The patch fixes this misue of __list_add() by using standard macros
instead (although a bit more code is needed).
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent b2e1b0cc
...@@ -322,10 +322,8 @@ int snd_seq_delete_all_ports(struct snd_seq_client *client) ...@@ -322,10 +322,8 @@ int snd_seq_delete_all_ports(struct snd_seq_client *client)
mutex_lock(&client->ports_mutex); mutex_lock(&client->ports_mutex);
write_lock_irqsave(&client->ports_lock, flags); write_lock_irqsave(&client->ports_lock, flags);
if (! list_empty(&client->ports_list_head)) { if (! list_empty(&client->ports_list_head)) {
__list_add(&deleted_list, list_add(&deleted_list, &client->ports_list_head);
client->ports_list_head.prev, list_del_init(&client->ports_list_head);
client->ports_list_head.next);
INIT_LIST_HEAD(&client->ports_list_head);
} else { } else {
INIT_LIST_HEAD(&deleted_list); INIT_LIST_HEAD(&deleted_list);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment