Unverified Commit 7a9fa7fd authored by Richard Fitzgerald's avatar Richard Fitzgerald Committed by Mark Brown
Browse files

firmware: cs_dsp: Remove __free() from cs_dsp_debugfs_string_read()



Don't use __free(kfree) in cs_dsp_debugfs_string_read. Instead use
normal kfree() to cleanup.

The use of __free() can create new cleanup bugs that are difficult to spot
because the defective code is idiomatically correct regular C. This
function used the suspect declaration __free(kfree) = NULL;.

The __free(kfree) didn't really do anything here. The function can be
rearranged to avoid any need to return or goto within the code.

Signed-off-by: default avatarRichard Fitzgerald <rf@opensource.cirrus.com>
Fixes: 3045e29d ("firmware: cs_dsp: Append \n to debugfs string during read")
Link: https://patch.msgid.link/20251202113425.413700-1-rf@opensource.cirrus.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 69927c13
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -375,18 +375,23 @@ static ssize_t cs_dsp_debugfs_string_read(struct cs_dsp *dsp,
					  size_t count, loff_t *ppos,
					  const char **pstr)
{
	const char *str __free(kfree) = NULL;
	const char *str;
	ssize_t ret = 0;

	scoped_guard(mutex, &dsp->pwr_lock) {
		if (!*pstr)
			return 0;

		if (*pstr) {
			str = kasprintf(GFP_KERNEL, "%s\n", *pstr);
		if (!str)
			return -ENOMEM;

		return simple_read_from_buffer(user_buf, count, ppos, str, strlen(str));
			if (str) {
				ret = simple_read_from_buffer(user_buf, count,
							      ppos, str, strlen(str));
				kfree(str);
			} else {
				ret = -ENOMEM;
			}
		}
	}

	return ret;
}

static ssize_t cs_dsp_debugfs_wmfw_read(struct file *file,