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>
This commit is contained in:
Kuninori Morimoto 2019-09-12 13:38:50 +09:00 committed by Mark Brown
parent a848125e32
commit 753ace0a34
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -359,6 +359,7 @@ static void soc_free_pcm_runtime(struct snd_soc_pcm_runtime *rtd)
{ {
kfree(rtd->codec_dais); kfree(rtd->codec_dais);
snd_soc_rtdcom_del_all(rtd); snd_soc_rtdcom_del_all(rtd);
list_del(&rtd->list);
kfree(rtd); kfree(rtd);
} }
@ -397,10 +398,8 @@ static void soc_remove_pcm_runtimes(struct snd_soc_card *card)
{ {
struct snd_soc_pcm_runtime *rtd, *_rtd; struct snd_soc_pcm_runtime *rtd, *_rtd;
for_each_card_rtds_safe(card, rtd, _rtd) { for_each_card_rtds_safe(card, rtd, _rtd)
list_del(&rtd->list);
soc_free_pcm_runtime(rtd); soc_free_pcm_runtime(rtd);
}
card->num_rtd = 0; card->num_rtd = 0;
} }