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: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
        mutex_lock(&client->ports_mutex);
        write_lock_irqsave(&client->ports_lock, flags);
        if (! list_empty(&client->ports_list_head)) {
-               __list_add(&deleted_list,
-                          client->ports_list_head.prev,
-                          client->ports_list_head.next);
-               INIT_LIST_HEAD(&client->ports_list_head);
+               list_add(&deleted_list, &client->ports_list_head);
+               list_del_init(&client->ports_list_head);
        } else {
                INIT_LIST_HEAD(&deleted_list);
        }