[alsa-devel] [PATCH 3/7] ASoC: topology: Fix memory leak from soc_tplg_denum_create_texts

Takashi Iwai tiwai at suse.de
Sat Jan 26 18:43:26 CET 2019


On Fri, 25 Jan 2019 21:06:44 +0100,
Pierre-Louis Bossart wrote:
> 
> From: Amadeusz Sławiński <amadeuszx.slawinski at intel.com>
> 
> dtexts is two dimensional array, so we also need to free it after
> freeing its fields.
> 
> Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski at intel.com>
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
> ---
>  sound/soc/soc-topology.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c
> index abc2d804d5bf..71bc5b8a9bd3 100644
> --- a/sound/soc/soc-topology.c
> +++ b/sound/soc/soc-topology.c
> @@ -410,6 +410,7 @@ static void remove_enum(struct snd_soc_component *comp,
>  	kfree(dobj->control.dvalues);
>  	for (i = 0; i < se->items; i++)
>  		kfree(dobj->control.dtexts[i]);
> +	kfree(dobj->control.dtexts);
>  	kfree(se);
>  }
>  
> @@ -467,6 +468,7 @@ static void remove_widget(struct snd_soc_component *comp,
>  			kfree(dobj->control.dvalues);
>  			for (j = 0; j < se->items; j++)
>  				kfree(dobj->control.dtexts[j]);
> +			kfree(dobj->control.dtexts);
>  
>  			kfree(se);
>  			kfree(w->kcontrol_news[i].name);
> @@ -1361,6 +1363,7 @@ static struct snd_kcontrol_new *soc_tplg_dapm_widget_denum_create(
>  		kfree(se->dobj.control.dvalues);
>  		for (j = 0; j < ec->items; j++)
>  			kfree(se->dobj.control.dtexts[j]);
> +		kfree(se->dobj.control.dtexts);
>  
>  		kfree(se);
>  		kfree(kc[i].name);

It's interesting that this patch shows three places doing the very
same thing.  It's worth to make a common helper, I suppose.


thanks,

Takashi


More information about the Alsa-devel mailing list