diff --git a/[refs] b/[refs] index 6b32f5c84e0e..69a0a8fce4c4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 18668ff9a3232d5f942a2f7abc1ad67d2760dcdf +refs/heads/master: b171e204b32b69e241af994d6e9be559e33535c1 diff --git a/trunk/drivers/firewire/core-card.c b/trunk/drivers/firewire/core-card.c index f74edae5cb4c..e4864e894e4f 100644 --- a/trunk/drivers/firewire/core-card.c +++ b/trunk/drivers/firewire/core-card.c @@ -444,16 +444,13 @@ int fw_card_add(struct fw_card *card, card->guid = guid; mutex_lock(&card_mutex); - config_rom = generate_config_rom(card, &length); - list_add_tail(&card->link, &card_list); - mutex_unlock(&card_mutex); + config_rom = generate_config_rom(card, &length); ret = card->driver->enable(card, config_rom, length); - if (ret < 0) { - mutex_lock(&card_mutex); - list_del(&card->link); - mutex_unlock(&card_mutex); - } + if (ret == 0) + list_add_tail(&card->link, &card_list); + + mutex_unlock(&card_mutex); return ret; }