ASoC: core: Fix obscure leak of runtime array
We're currently not freeing card->rtd in cases where the card is unregistered before being instantiated - convert it to devm_kzalloc() to make sure that happens. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
This commit is contained in:
parent
4eb98f45b7
commit
181a68927b
|
@ -1686,7 +1686,6 @@ static int soc_cleanup_card_resources(struct snd_soc_card *card)
|
||||||
|
|
||||||
snd_soc_dapm_free(&card->dapm);
|
snd_soc_dapm_free(&card->dapm);
|
||||||
|
|
||||||
kfree(card->rtd);
|
|
||||||
snd_card_free(card->snd_card);
|
snd_card_free(card->snd_card);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -3112,9 +3111,10 @@ int snd_soc_register_card(struct snd_soc_card *card)
|
||||||
|
|
||||||
soc_init_card_debugfs(card);
|
soc_init_card_debugfs(card);
|
||||||
|
|
||||||
card->rtd = kzalloc(sizeof(struct snd_soc_pcm_runtime) *
|
card->rtd = devm_kzalloc(card->dev,
|
||||||
(card->num_links + card->num_aux_devs),
|
sizeof(struct snd_soc_pcm_runtime) *
|
||||||
GFP_KERNEL);
|
(card->num_links + card->num_aux_devs),
|
||||||
|
GFP_KERNEL);
|
||||||
if (card->rtd == NULL)
|
if (card->rtd == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
card->rtd_aux = &card->rtd[card->num_links];
|
card->rtd_aux = &card->rtd[card->num_links];
|
||||||
|
|
Loading…
Reference in New Issue