From a0a4bf57a977ed37bcbdfc8027a44485fe086a3d Mon Sep 17 00:00:00 2001
From: Bard Liao <yung-chuan.liao@linux.intel.com>
Date: Tue, 17 Sep 2019 05:03:53 +0800
Subject: [PATCH] ASoC: core: delete component->card_list in soc_remove_component only
Git-commit: a0a4bf57a977ed37bcbdfc8027a44485fe086a3d
Patch-mainline: v5.4-rc1
References: git-fixes
We add component->card_list in the end of soc_probe_component(). In
other words, component->card_list will not be added if there is an
error in the soc_probe_component() function. So we can't delete
component->card_list in the error handling of soc_probe_component().
Fixes: 22d1423187e5 ("ASoC: soc-core: add soc_cleanup_component()")
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20190916210353.6318-1-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Acked-by: Takashi Iwai <tiwai@suse.de>
---
sound/soc/soc-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -965,7 +965,6 @@ _err_defer:
static void soc_cleanup_component(struct snd_soc_component *component)
{
snd_soc_component_set_jack(component, NULL, NULL);
- list_del(&component->card_list);
snd_soc_dapm_free(snd_soc_component_get_dapm(component));
soc_cleanup_component_debugfs(component);
component->card = NULL;
@@ -981,6 +980,7 @@ static void soc_remove_component(struct
if (component->driver->remove)
component->driver->remove(component);
+ list_del(&component->card_list);
soc_cleanup_component(component);
}