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 f0617cc..88c60ec 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 664f361..5b6d3e8 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 c091590..c8c2487 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 d8df590..e001797 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 3f766f2..aa6efcc 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 3653232..2a79e68 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;