From 8788b38eb43a06e03b35a6a15e56bf74790e6132 Mon Sep 17 00:00:00 2001 From: Axel Lin Date: Tue, 7 Dec 2010 20:56:30 +0800 Subject: [PATCH] --- yaml --- r: 223109 b: refs/heads/master c: 681e36924788aeea2717c07cc42a21c9c86d7559 h: refs/heads/master i: 223107: 3801dc5c389d9fb2ad21933bf933a8d03b96b2c6 v: v3 --- [refs] | 2 +- trunk/sound/soc/soc-core.c | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 62e0f1b24b2f..5de4916daa26 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1dcb4f38e5bc28dfce0f8c7eef184a090b03bfc7 +refs/heads/master: 681e36924788aeea2717c07cc42a21c9c86d7559 diff --git a/trunk/sound/soc/soc-core.c b/trunk/sound/soc/soc-core.c index 02ae7bea3b50..85b7d548f167 100644 --- a/trunk/sound/soc/soc-core.c +++ b/trunk/sound/soc/soc-core.c @@ -1619,12 +1619,14 @@ static void snd_soc_instantiate_card(struct snd_soc_card *card) #ifdef CONFIG_SND_SOC_AC97_BUS /* register any AC97 codecs */ for (i = 0; i < card->num_rtd; i++) { - ret = soc_register_ac97_dai_link(&card->rtd[i]); - if (ret < 0) { - printk(KERN_ERR "asoc: failed to register AC97 %s\n", card->name); - goto probe_dai_err; - } + ret = soc_register_ac97_dai_link(&card->rtd[i]); + if (ret < 0) { + printk(KERN_ERR "asoc: failed to register AC97 %s\n", card->name); + while (--i >= 0) + soc_unregister_ac97_dai_link(&card->rtd[i]); + goto probe_dai_err; } + } #endif card->instantiated = 1;