diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-03-14 16:18:49 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-03-15 10:28:25 -0400 |
commit | 181a68927b9e6ff7c0ea093c2f056eeb0552a911 (patch) | |
tree | 5e897ae095713dea4085908dd5c9f3519e3e9c51 /sound/soc | |
parent | 4eb98f45b77b00868dcebe4a0f00d2a36afd88c2 (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/soc')
-rw-r--r-- | sound/soc/soc-core.c | 8 |
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]; |