diff options
author | Mark Brown <broonie@kernel.org> | 2019-05-30 16:47:43 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-05-30 16:47:43 +0100 |
commit | 79b3b7c4a396b9fa1963ac70e853998633e8151d (patch) | |
tree | c1e507b4a6fff773ec81e90e1be11f1b35e773b6 /sound/soc/soc-core.c | |
parent | e13ef82a9ab83dd21d8dd43ef9f5e8bf5b101106 (diff) | |
parent | 1f2675f6655838aaf910f911fd0abc821e3ff3df (diff) | |
download | linux-79b3b7c4a396b9fa1963ac70e853998633e8151d.tar.bz2 |
Merge branch 'asoc-5.2' into asoc-5.3
Diffstat (limited to 'sound/soc/soc-core.c')
-rw-r--r-- | sound/soc/soc-core.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 5f83e2f19801..2d3520fca613 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -228,7 +228,10 @@ static void soc_init_card_debugfs(struct snd_soc_card *card) static void soc_cleanup_card_debugfs(struct snd_soc_card *card) { + if (!card->debugfs_card_root) + return; debugfs_remove_recursive(card->debugfs_card_root); + card->debugfs_card_root = NULL; } static void snd_soc_debugfs_init(void) @@ -1010,12 +1013,14 @@ static void soc_remove_link_components(struct snd_soc_card *card, struct snd_soc_component *component; struct snd_soc_rtdcom_list *rtdcom; + mutex_lock(&client_mutex); for_each_rtdcom(rtd, rtdcom) { component = rtdcom->component; if (component->driver->remove_order == order) soc_remove_component(component); } + mutex_unlock(&client_mutex); } static void soc_remove_dai_links(struct snd_soc_card *card) @@ -2035,8 +2040,10 @@ match: static int soc_cleanup_card_resources(struct snd_soc_card *card) { /* free the ALSA card at first; this syncs with pending operations */ - if (card->snd_card) + if (card->snd_card) { snd_card_free(card->snd_card); + card->snd_card = NULL; + } /* remove and free each DAI */ soc_remove_dai_links(card); |