aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2019-09-12 13:38:50 +0900
committerMark Brown <broonie@kernel.org>2019-10-01 12:11:57 +0100
commit753ace0a34fbd39ac2ec654c6859823db420f69e (patch)
tree0befd4d6bf2d48ea83000e07f4c8ede736162807
parentASoC: soc-core: merge soc_add_pcm_runtime() into soc_new_pcm_runtime() (diff)
ASoC: soc-core: call list_del(&rtd->list) at soc_free_pcm_runtime()
Current ALSA SoC is calling list_del(&rtd->list) at (1) static void soc_remove_pcm_runtimes(...) { ... for_each_card_rtds_safe(card, rtd, _rtd) { (1) list_del(&rtd->list); (2) soc_free_pcm_runtime(rtd); } ... } But, we will call soc_free_pcm_runtime() after that (2). &rtd->list is connected at soc_new_pcm_runtime(), Thus, it should be disconnected at soc_free_pcm_runtime(). This patch calls list_del(&rtd->list) at soc_free_pcm_runtime(). Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/87d0g6f7s5.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--sound/soc/soc-core.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index cadf96bc0097..7a3f4783adf6 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -359,6 +359,7 @@ static void soc_free_pcm_runtime(struct snd_soc_pcm_runtime *rtd)
{
kfree(rtd->codec_dais);
snd_soc_rtdcom_del_all(rtd);
+ list_del(&rtd->list);
kfree(rtd);
}
@@ -397,10 +398,8 @@ static void soc_remove_pcm_runtimes(struct snd_soc_card *card)
{
struct snd_soc_pcm_runtime *rtd, *_rtd;
- for_each_card_rtds_safe(card, rtd, _rtd) {
- list_del(&rtd->list);
+ for_each_card_rtds_safe(card, rtd, _rtd)
soc_free_pcm_runtime(rtd);
- }
card->num_rtd = 0;
}