diff options
author | Peter Ujfalusi <peter.ujfalusi@linux.intel.com> | 2022-03-31 14:48:45 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2022-04-04 16:25:38 +0300 |
commit | 5708cc2f4b50c7bf27234eee77e1d9487533bbd3 (patch) | |
tree | dfc25d53f470dcd946d75ba87a19cb8466845b04 /sound/soc | |
parent | acc72863e0f11cd0bedc888b663700229f9ba5ff (diff) | |
download | linux-5708cc2f4b50c7bf27234eee77e1d9487533bbd3.tar.xz |
ASoC: SOF: topology: Fix memory leak of scontrol->name
The scontrol->name is allocated with kstrdup, it must be freed before the
scontrol is freed to avoid leaking memory.
The constant leaking happens via sof_widget_unload() path on every module
removal.
Fixes: b5cee8feb1d48 ("ASoC: SOF: topology: Make control parsing IPC agnostic")
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://lore.kernel.org/r/20220331114845.32747-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/sof/topology.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/soc/sof/topology.c b/sound/soc/sof/topology.c index 9b11e9795a7a..75d78f9178a3 100644 --- a/sound/soc/sof/topology.c +++ b/sound/soc/sof/topology.c @@ -941,11 +941,13 @@ static int sof_control_load(struct snd_soc_component *scomp, int index, default: dev_warn(scomp->dev, "control type not supported %d:%d:%d\n", hdr->ops.get, hdr->ops.put, hdr->ops.info); + kfree(scontrol->name); kfree(scontrol); return 0; } if (ret < 0) { + kfree(scontrol->name); kfree(scontrol); return ret; } @@ -1380,6 +1382,7 @@ static int sof_widget_unload(struct snd_soc_component *scomp, } kfree(scontrol->ipc_control_data); list_del(&scontrol->list); + kfree(scontrol->name); kfree(scontrol); } |