]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: SOF: topology: fix memory leak in snd_sof_load_topology
authorZhao Dongdong <zhaodongdong@kylinos.cn>
Wed, 10 Jun 2026 07:20:43 +0000 (15:20 +0800)
committerMark Brown <broonie@kernel.org>
Thu, 11 Jun 2026 20:41:33 +0000 (21:41 +0100)
When the topology filename contains "dummy" and tplg_cnt is 0, the
function returns -EINVAL directly without freeing the tplg_files
allocated by kcalloc() at line 2497. This leaks memory on every
such topology load attempt.

Fix this by setting ret = -EINVAL and jumping to the out: label,
which already handles the kfree(tplg_files) cleanup.

Fixes: 99c159279c6d ("ASoC: SOF: don't check the existence of dummy topology")
Cc: stable@vger.kernel.org
Signed-off-by: Zhao Dongdong <zhaodongdong@kylinos.cn>
Acked-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://patch.msgid.link/tencent_3EED6D778DC52C3703A2D1EE8119372E8E08@qq.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/topology.c

index bb6b981e55d1beae245c8f04f92c21ba93a48374..42a2d90bb705dfcd573638f1d3ccf5e24d57a6ac 100644 (file)
@@ -2551,6 +2551,8 @@ int snd_sof_load_topology(struct snd_soc_component *scomp, const char *file)
                if (strstr(file, "dummy")) {
                        dev_err(scomp->dev,
                                "Function topology is required, please upgrade sof-firmware\n");
+
+                       kfree(tplg_files);
                        return -EINVAL;
                }
                tplg_files[0] = file;