Skip to content

Commit 100e389

Browse files
committed
Merge tag 'perf-urgent-2020-11-08' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf fix from Thomas Gleixner: "A single fix for the perf core plugging a memory leak in the address filter parser" * tag 'perf-urgent-2020-11-08' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: perf/core: Fix a memory leak in perf_event_parse_addr_filter()
2 parents aaaaa7e + 7bdb157 commit 100e389

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

kernel/events/core.c

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10085,6 +10085,7 @@ perf_event_parse_addr_filter(struct perf_event *event, char *fstr,
1008510085
if (token == IF_SRC_FILE || token == IF_SRC_FILEADDR) {
1008610086
int fpos = token == IF_SRC_FILE ? 2 : 1;
1008710087

10088+
kfree(filename);
1008810089
filename = match_strdup(&args[fpos]);
1008910090
if (!filename) {
1009010091
ret = -ENOMEM;
@@ -10131,16 +10132,13 @@ perf_event_parse_addr_filter(struct perf_event *event, char *fstr,
1013110132
*/
1013210133
ret = -EOPNOTSUPP;
1013310134
if (!event->ctx->task)
10134-
goto fail_free_name;
10135+
goto fail;
1013510136

1013610137
/* look up the path and grab its inode */
1013710138
ret = kern_path(filename, LOOKUP_FOLLOW,
1013810139
&filter->path);
1013910140
if (ret)
10140-
goto fail_free_name;
10141-
10142-
kfree(filename);
10143-
filename = NULL;
10141+
goto fail;
1014410142

1014510143
ret = -EINVAL;
1014610144
if (!filter->path.dentry ||
@@ -10160,13 +10158,13 @@ perf_event_parse_addr_filter(struct perf_event *event, char *fstr,
1016010158
if (state != IF_STATE_ACTION)
1016110159
goto fail;
1016210160

10161+
kfree(filename);
1016310162
kfree(orig);
1016410163

1016510164
return 0;
1016610165

10167-
fail_free_name:
10168-
kfree(filename);
1016910166
fail:
10167+
kfree(filename);
1017010168
free_filters_list(filters);
1017110169
kfree(orig);
1017210170

0 commit comments

Comments
 (0)