Skip to content

Commit

Permalink
firewire: core: Remove card from list of cards when enable fails
Browse files Browse the repository at this point in the history
Signed-off-by: Petr Vandrovec <petr@vandrovec.name>

After a controller initialization failure, addition of another card got
stuck due to card_list corruption.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
  • Loading branch information
Petr Vandrovec authored and Stefan Richter committed Feb 1, 2009
1 parent 1448d7c commit b7479fe
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion drivers/firewire/fw-card.c
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,7 @@ fw_card_add(struct fw_card *card,
{
u32 *config_rom;
size_t length;
int err;

card->max_receive = max_receive;
card->link_speed = link_speed;
Expand All @@ -422,7 +423,13 @@ fw_card_add(struct fw_card *card,
list_add_tail(&card->link, &card_list);
mutex_unlock(&card_mutex);

return card->driver->enable(card, config_rom, length);
err = card->driver->enable(card, config_rom, length);
if (err < 0) {
mutex_lock(&card_mutex);
list_del(&card->link);
mutex_unlock(&card_mutex);
}
return err;
}
EXPORT_SYMBOL(fw_card_add);

Expand Down

0 comments on commit b7479fe

Please sign in to comment.