Skip to content

Commit 6c038b5

Browse files
TMR5454broonie
authored andcommitted
ASoC: SOF: Intel: hda: Use devm_kstrdup() to avoid memleak.
sof_pdata->tplg_filename can have address allocated by kstrdup() and can be overwritten. Memory leak was detected with kmemleak: unreferenced object 0xffff88812391ff60 (size 16): comm "kworker/4:1", pid 161, jiffies 4294802931 hex dump (first 16 bytes): 73 6f 66 2d 68 64 61 2d 67 65 6e 65 72 69 63 00 sof-hda-generic. backtrace (crc 4bf1675c): __kmalloc_node_track_caller_noprof+0x49c/0x6b0 kstrdup+0x46/0xc0 hda_machine_select.cold+0x1de/0x12cf [snd_sof_intel_hda_generic] sof_init_environment+0x16f/0xb50 [snd_sof] sof_probe_continue+0x45/0x7c0 [snd_sof] sof_probe_work+0x1e/0x40 [snd_sof] process_one_work+0x894/0x14b0 worker_thread+0x5e5/0xfb0 kthread+0x39d/0x760 ret_from_fork+0x31/0x70 ret_from_fork_asm+0x1a/0x30 Signed-off-by: Tamura Dai <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent ff21a6e commit 6c038b5

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

sound/soc/sof/intel/hda.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1257,11 +1257,11 @@ static int check_tplg_quirk_mask(struct snd_soc_acpi_mach *mach)
12571257
return 0;
12581258
}
12591259

1260-
static char *remove_file_ext(const char *tplg_filename)
1260+
static char *remove_file_ext(struct device *dev, const char *tplg_filename)
12611261
{
12621262
char *filename, *tmp;
12631263

1264-
filename = kstrdup(tplg_filename, GFP_KERNEL);
1264+
filename = devm_kstrdup(dev, tplg_filename, GFP_KERNEL);
12651265
if (!filename)
12661266
return NULL;
12671267

@@ -1345,7 +1345,7 @@ struct snd_soc_acpi_mach *hda_machine_select(struct snd_sof_dev *sdev)
13451345
*/
13461346
if (!sof_pdata->tplg_filename) {
13471347
/* remove file extension if it exists */
1348-
tplg_filename = remove_file_ext(mach->sof_tplg_filename);
1348+
tplg_filename = remove_file_ext(sdev->dev, mach->sof_tplg_filename);
13491349
if (!tplg_filename)
13501350
return NULL;
13511351

0 commit comments

Comments
 (0)