30 May
2023
30 May
'23
11:34 a.m.
On 30/05/2023 08:39, Claudiu.Beznea@microchip.com wrote:
On 26.05.2023 15:28, Richard Fitzgerald wrote:
+static int cs35l56_hda_request_firmware_file(struct cs35l56_hda *cs35l56,
const struct firmware **firmware, char **filename,const char *dir, const char *system_name,const char *amp_name,const char *filetype)+{
char *s, c;int ret = 0;if (system_name && amp_name)*filename = kasprintf(GFP_KERNEL, "%scs35l56%s-%02x-dsp1-misc-%s-%s.%s", dir,cs35l56->base.secured ? "s" : "", cs35l56->base.rev,system_name, amp_name, filetype);else if (system_name)*filename = kasprintf(GFP_KERNEL, "%scs35l56%s-%02x-dsp1-misc-%s.%s", dir,cs35l56->base.secured ? "s" : "", cs35l56->base.rev,system_name, filetype);else*filename = kasprintf(GFP_KERNEL, "%scs35l56%s-%02x-dsp1-misc.%s", dir,cs35l56->base.secured ? "s" : "", cs35l56->base.rev,filetype);if (!*filename)return -ENOMEM;/** Make sure that filename is lower-case and any non alpha-numeric* characters except full stop and forward slash are replaced with* hyphens.*/s = *filename;while (*s) {c = *s;if (isalnum(c))*s = tolower(c);else if (c != '.' && c != '/')*s = '-';s++;}ret = firmware_request_nowarn(firmware, *filename, cs35l56->base.dev);if (ret) {dev_dbg(cs35l56->base.dev, "Failed to request '%s'\n", *filename);kfree(*filename);*filename = NULL;} else {dev_dbg(cs35l56->base.dev, "Found '%s'\n", *filename);I may be wrong but *filename seems leaked to me on this path. I noticed it is could be duplicated on cs_dsp_debugfs_save_wmfwname() but the original copy seems left aside.
It's not a leak. The file has been found so the name of the found file is returned (it's used by other code). But there is a leak of that memory elsewhere.
}return ret;+}