[alsa-devel] [PATCH 1/2] ASoC: core: Fix obscure leak of runtime array

Mark Brown broonie at opensource.wolfsonmicro.com
Wed Mar 14 22:20:43 CET 2012


We're currently not freeing card->rtd in cases where the card is
unregistered before being registered - convert it to devm_kzalloc() to
make sure that happens.

Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
---
 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 9a7ca0e..b0f8666 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1694,7 +1694,6 @@ static int soc_cleanup_card_resources(struct snd_soc_card *card)
 
 	snd_soc_dapm_free(&card->dapm);
 
-	kfree(card->rtd);
 	snd_card_free(card->snd_card);
 	return 0;
 
@@ -3120,9 +3119,10 @@ int snd_soc_register_card(struct snd_soc_card *card)
 
 	soc_init_card_debugfs(card);
 
-	card->rtd = kzalloc(sizeof(struct snd_soc_pcm_runtime) *
-			    (card->num_links + card->num_aux_devs),
-			    GFP_KERNEL);
+	card->rtd = devm_kzalloc(card->dev,
+				 sizeof(struct snd_soc_pcm_runtime) *
+				 (card->num_links + card->num_aux_devs),
+				 GFP_KERNEL);
 	if (card->rtd == NULL)
 		return -ENOMEM;
 	card->rtd_aux = &card->rtd[card->num_links];
-- 
1.7.9.1



More information about the Alsa-devel mailing list