Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b7479feb authored by Petr Vandrovec's avatar Petr Vandrovec Committed by Stefan Richter
Browse files

firewire: core: Remove card from list of cards when enable fails



Signed-off-by: default avatarPetr Vandrovec <petr@vandrovec.name>

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

Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
parent 1448d7c6
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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);