summaryrefslogtreecommitdiff
path: root/kernel/events
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2020-12-11 20:48:04 +0300
committerMark Brown <broonie@kernel.org>2020-12-11 20:48:04 +0300
commit460aa020f56c974a3e7e5b5378b2355fec6a2c11 (patch)
tree959dc05609eec2a040245f43964ae5738ee741cb /kernel/events
parent031616c434db05ce766f76c62865f55698e0924f (diff)
parent84de089e770b57280d87dff51be894b6fda18810 (diff)
downloadlinux-460aa020f56c974a3e7e5b5378b2355fec6a2c11.tar.xz
Merge remote-tracking branch 'asoc/for-5.11' into asoc-next
Diffstat (limited to 'kernel/events')
-rw-r--r--kernel/events/core.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c
index da467e1dd49a..5a29ab09e72d 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -10085,6 +10085,7 @@ perf_event_parse_addr_filter(struct perf_event *event, char *fstr,
if (token == IF_SRC_FILE || token == IF_SRC_FILEADDR) {
int fpos = token == IF_SRC_FILE ? 2 : 1;
+ kfree(filename);
filename = match_strdup(&args[fpos]);
if (!filename) {
ret = -ENOMEM;
@@ -10131,16 +10132,13 @@ perf_event_parse_addr_filter(struct perf_event *event, char *fstr,
*/
ret = -EOPNOTSUPP;
if (!event->ctx->task)
- goto fail_free_name;
+ goto fail;
/* look up the path and grab its inode */
ret = kern_path(filename, LOOKUP_FOLLOW,
&filter->path);
if (ret)
- goto fail_free_name;
-
- kfree(filename);
- filename = NULL;
+ goto fail;
ret = -EINVAL;
if (!filter->path.dentry ||
@@ -10160,13 +10158,13 @@ perf_event_parse_addr_filter(struct perf_event *event, char *fstr,
if (state != IF_STATE_ACTION)
goto fail;
+ kfree(filename);
kfree(orig);
return 0;
-fail_free_name:
- kfree(filename);
fail:
+ kfree(filename);
free_filters_list(filters);
kfree(orig);