perf env: Remove global perf_env
authorIan Rogers <irogers@google.com>
Thu, 24 Jul 2025 16:32:59 +0000 (09:32 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Fri, 25 Jul 2025 17:37:58 +0000 (10:37 -0700)
The global perf_env was used for the host, but if a perf_env wasn't
easy to come by it was used in a lot of places where potentially
recorded and host data could be confused. Remove the global variable
as now the majority of accesses retrieve the perf_env for the host
from the session.

Signed-off-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/20250724163302.596743-20-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/perf.c
tools/perf/util/bpf-event.c
tools/perf/util/env.c
tools/perf/util/env.h
tools/perf/util/evsel.c
tools/perf/util/session.c

index f0617cc41f5fe638986e5d8316a6b3056c2c4bc5..88c60ecf3395dab3714f16731adef9efed6904cc 100644 (file)
@@ -346,12 +346,9 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
                use_pager = 1;
        commit_pager_choice();
 
-       perf_env__init(&perf_env);
-       perf_env__set_cmdline(&perf_env, argc, argv);
        status = p->fn(argc, argv);
        perf_config__exit();
        exit_browser(status);
-       perf_env__exit(&perf_env);
 
        if (status)
                return status & 0xff;
index 664f361ef8c139e8c343807f73aef98d3496f32f..5b6d3e899e115904d87d562574a9f5689cd9571e 100644 (file)
@@ -549,7 +549,7 @@ static int perf_event__synthesize_one_bpf_prog(struct perf_session *session,
         * for perf-record and perf-report use header.env;
         * otherwise, use global perf_env.
         */
-       env = session->data ? perf_session__env(session) : &perf_env;
+       env = perf_session__env(session);
 
        arrays = 1UL << PERF_BPIL_JITED_KSYMS;
        arrays |= 1UL << PERF_BPIL_JITED_FUNC_LENS;
index c09159083bf00d4b27f7a0f3ca48f54bd61902f4..c8c2487546212f4efa5889e67c04c917f84c734e 100644 (file)
@@ -19,8 +19,6 @@
 #include "strbuf.h"
 #include "trace/beauty/beauty.h"
 
-struct perf_env perf_env;
-
 #ifdef HAVE_LIBBPF_SUPPORT
 #include "bpf-event.h"
 #include "bpf-utils.h"
index d8df590725292549df3fc294e2226677060e9ce9..e00179787a341625a2e4b012be7ab5c94765bb43 100644 (file)
@@ -150,8 +150,6 @@ enum perf_compress_type {
 struct bpf_prog_info_node;
 struct btf_node;
 
-extern struct perf_env perf_env;
-
 int perf_env__read_core_pmu_caps(struct perf_env *env);
 void perf_env__exit(struct perf_env *env);
 
index 3f766f240cc7f9181aa4aedbfcf782862d835e98..aa6efcc4404cf210a6091b53b07b9da7c857fa91 100644 (file)
@@ -3882,7 +3882,7 @@ struct perf_env *evsel__env(struct evsel *evsel)
 {
        struct perf_session *session = evsel__session(evsel);
 
-       return session ? perf_session__env(session) : &perf_env;
+       return session ? perf_session__env(session) : NULL;
 }
 
 static int store_evsel_ids(struct evsel *evsel, struct evlist *evlist)
index 36532329a633e0ed63b20273e0cb8bc98ffdc841..2a79e6844f3610994585cff4bfd307ade59a2bb2 100644 (file)
@@ -192,7 +192,8 @@ struct perf_session *__perf_session__new(struct perf_data *data,
                                symbol_conf.kallsyms_name = perf_data__kallsyms_name(data);
                }
        } else  {
-               session->machines.host.env = host_env ?: &perf_env;
+               assert(host_env != NULL);
+               session->machines.host.env = host_env;
        }
        if (session->evlist)
                session->evlist->session = session;