perf report: Fix memory leaks around perf_tip()
[ Upstream commit d9fc706108c15f8bc2d4ccccf8e50f74830fabd9 ] perf_tip() may allocate memory or use a literal, this means memory wasn't freed if allocated. Change the API so that literals aren't used. At the same time add missing frees for system_path. These issues were spotted using leak sanitizer. Signed-off-by: Ian Rogers <irogers@google.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lore.kernel.org/lkml/20211118073804.2149974-1-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
a4c17ebdd6
commit
ff061b5bda
@@ -610,14 +610,17 @@ static int report__browse_hists(struct report *rep)
|
||||
int ret;
|
||||
struct perf_session *session = rep->session;
|
||||
struct evlist *evlist = session->evlist;
|
||||
const char *help = perf_tip(system_path(TIPDIR));
|
||||
char *help = NULL, *path = NULL;
|
||||
|
||||
if (help == NULL) {
|
||||
path = system_path(TIPDIR);
|
||||
if (perf_tip(&help, path) || help == NULL) {
|
||||
/* fallback for people who don't install perf ;-) */
|
||||
help = perf_tip(DOCDIR);
|
||||
if (help == NULL)
|
||||
help = "Cannot load tips.txt file, please install perf!";
|
||||
free(path);
|
||||
path = system_path(DOCDIR);
|
||||
if (perf_tip(&help, path) || help == NULL)
|
||||
help = strdup("Cannot load tips.txt file, please install perf!");
|
||||
}
|
||||
free(path);
|
||||
|
||||
switch (use_browser) {
|
||||
case 1:
|
||||
@@ -644,7 +647,7 @@ static int report__browse_hists(struct report *rep)
|
||||
ret = perf_evlist__tty_browse_hists(evlist, rep, help);
|
||||
break;
|
||||
}
|
||||
|
||||
free(help);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user