aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2012-03-14 16:18:49 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-03-15 10:28:25 -0400
commit181a68927b9e6ff7c0ea093c2f056eeb0552a911 (patch)
tree5e897ae095713dea4085908dd5c9f3519e3e9c51 /sound
parent4eb98f45b77b00868dcebe4a0f00d2a36afd88c2 (diff)
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>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/soc-core.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 93a0daac5088..a4deebc0801a 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1686,7 +1686,6 @@ static int soc_cleanup_card_resources(struct snd_soc_card *card)
1686 1686
1687 snd_soc_dapm_free(&card->dapm); 1687 snd_soc_dapm_free(&card->dapm);
1688 1688
1689 kfree(card->rtd);
1690 snd_card_free(card->snd_card); 1689 snd_card_free(card->snd_card);
1691 return 0; 1690 return 0;
1692 1691
@@ -3112,9 +3111,10 @@ int snd_soc_register_card(struct snd_soc_card *card)
3112 3111
3113 soc_init_card_debugfs(card); 3112 soc_init_card_debugfs(card);
3114 3113
3115 card->rtd = kzalloc(sizeof(struct snd_soc_pcm_runtime) * 3114 card->rtd = devm_kzalloc(card->dev,
3116 (card->num_links + card->num_aux_devs), 3115 sizeof(struct snd_soc_pcm_runtime) *
3117 GFP_KERNEL); 3116 (card->num_links + card->num_aux_devs),
3117 GFP_KERNEL);
3118 if (card->rtd == NULL) 3118 if (card->rtd == NULL)
3119 return -ENOMEM; 3119 return -ENOMEM;
3120 card->rtd_aux = &card->rtd[card->num_links]; 3120 card->rtd_aux = &card->rtd[card->num_links];