diff options
author | Bard liao <yung-chuan.liao@linux.intel.com> | 2019-09-18 21:31:31 +0800 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-09-20 12:05:46 +0100 |
commit | 7a5d9815cc010b055c2a99ccf418c4629365fa43 (patch) | |
tree | 4907031f0c05d7e0a951cc61eebe3cab7759d6d1 /sound/soc | |
parent | 947ec14c7369a87625f03abaab5b3f4d33ac73ba (diff) | |
download | linux-7a5d9815cc010b055c2a99ccf418c4629365fa43.tar.bz2 |
ASoC: core: use list_del_init and move it back to soc_cleanup_component
commit a0a4bf57a977 ("ASoC: core: delete component->card_list in soc_remove_component only")
was trying to fix a kernel oops when list_del was called twice without
re-init the list. Use list_del_init() can solve it, too. Besides, it
will be more readable if we cleanup all component related resource at
soc_cleanup_component().
Suggested-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Bard liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20190918133131.15045-1-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/soc-core.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index aff4b4bf4d07..88978a3036c4 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -978,6 +978,7 @@ static void soc_cleanup_component(struct snd_soc_component *component) /* For framework level robustness */ snd_soc_component_set_jack(component, NULL, NULL); + list_del_init(&component->card_list); snd_soc_dapm_free(snd_soc_component_get_dapm(component)); soc_cleanup_component_debugfs(component); component->card = NULL; @@ -990,7 +991,7 @@ static void soc_remove_component(struct snd_soc_component *component) return; snd_soc_component_remove(component); - list_del(&component->card_list); + soc_cleanup_component(component); } |