[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210820130817.740536-1-rickyman7@gmail.com>
Date: Fri, 20 Aug 2021 15:08:17 +0200
From: Riccardo Mancini <rickyman7@...il.com>
To: Arnaldo Carvalho de Melo <acme@...nel.org>
Cc: Ian Rogers <irogers@...gle.com>,
Namhyung Kim <namhyung@...nel.org>,
Riccardo Mancini <rickyman7@...il.com>,
Jiri Olsa <jolsa@...nel.org>,
Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...hat.com>,
Mark Rutland <mark.rutland@....com>,
Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
Jiri Olsa <jolsa@...hat.com>,
Jin Yao <yao.jin@...ux.intel.com>, Song Liu <song@...nel.org>,
linux-perf-users@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH] perf config: fix caching and memory leak in perf_home_perfconfig
Acaict, perf_home_perfconfig is supposed to cache the result of
home_perfconfig, which returns the default location of perfconfig for
the user, given the HOME environment variable.
However, the current implementation calls home_perfconfig every time
perf_home_perfconfig is called (so no caching is actually performed),
replacing the previous pointer, thus also causing a memory leak.
This patch adds a check of whether either config or failed is set and,
in that case, directly returns config without calling home_perfconfig at
each invocation.
Cc: Jiri Olsa <jolsa@...nel.org>
Fixes: f5f03e19ce14fc31 ("perf config: Add perf_home_perfconfig function")
Signed-off-by: Riccardo Mancini <rickyman7@...il.com>
---
tools/perf/util/config.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c
index 63d472b336de21d4..6ab670cdf512507e 100644
--- a/tools/perf/util/config.c
+++ b/tools/perf/util/config.c
@@ -581,6 +581,9 @@ const char *perf_home_perfconfig(void)
static const char *config;
static bool failed;
+ if (config || failed)
+ return config;
+
config = failed ? NULL : home_perfconfig();
if (!config)
failed = true;
--
2.31.1
Powered by blists - more mailing lists