[alsa-devel] [PATCH 03/13] ASoC: soc-core: call list_del(&rtd->list) at soc_free_pcm_runtime()
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Tue Sep 10 04:05:25 CEST 2019
From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
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 at renesas.com>
---
sound/soc/soc-core.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 4e93d2f..44e1bff 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;
}
--
2.7.4
More information about the Alsa-devel
mailing list