]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
perf test: Avoid use perf_env
authorIan Rogers <irogers@google.com>
Thu, 24 Jul 2025 16:32:52 +0000 (09:32 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Fri, 25 Jul 2025 17:37:57 +0000 (10:37 -0700)
The perf_env global variable holds the host perf_env data but its use
is hit and miss. Switch to using local perf_env variables and ensure
scoped perf_env__init and perf_env__exit. This loses command line
setting of the perf_env, but this doesn't matter for tests. So the
perf_env is fully initialized, clear it with memset in perf_env__init.

Signed-off-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/20250724163302.596743-13-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/tests/code-reading.c
tools/perf/tests/dlfilter-test.c
tools/perf/util/env.c

index 6efb6b4bbcce9752a311616107de8ab3a0b1bccc..0ec7004f90fe9ddf9e79d044d11935940b01ef00 100644 (file)
@@ -651,11 +651,13 @@ static int do_test_code_reading(bool try_kcore)
        struct dso *dso;
        const char *events[] = { "cycles", "cycles:u", "cpu-clock", "cpu-clock:u", NULL };
        int evidx = 0;
+       struct perf_env host_env;
 
        pid = getpid();
 
        machine = machine__new_host();
-       machine->env = &perf_env;
+       perf_env__init(&host_env);
+       machine->env = &host_env;
 
        ret = machine__create_kernel_maps(machine);
        if (ret < 0) {
@@ -791,6 +793,7 @@ out_err:
        perf_cpu_map__put(cpus);
        perf_thread_map__put(threads);
        machine__delete(machine);
+       perf_env__exit(&host_env);
 
        return err;
 }
index 54f59d1246bc53e8ee56af0401ea3a97bc984b74..6427e3382711f818c981ce1707c80dad2ac17489 100644 (file)
@@ -319,11 +319,12 @@ static int run_perf_script(struct test_data *td)
 
 static int test__dlfilter_test(struct test_data *td)
 {
+       struct perf_env host_env;
        u64 sample_type = TEST_SAMPLE_TYPE;
        pid_t pid = 12345;
        pid_t tid = 12346;
        u64 id = 99;
-       int err;
+       int err = TEST_OK;
 
        if (get_dlfilters_path(td->name, td->dlfilters, PATH_MAX))
                return test_result("dlfilters not found", TEST_SKIP);
@@ -353,37 +354,42 @@ static int test__dlfilter_test(struct test_data *td)
 
        pr_debug("Creating new host machine structure\n");
        td->machine = machine__new_host();
-       td->machine->env = &perf_env;
+       perf_env__init(&host_env);
+       td->machine->env = &host_env;
 
        td->fd = creat(td->perf_data_file_name, 0644);
        if (td->fd < 0)
                return test_result("Failed to create test perf.data file", TEST_FAIL);
 
        err = perf_header__write_pipe(td->fd);
-       if (err < 0)
-               return test_result("perf_header__write_pipe() failed", TEST_FAIL);
-
+       if (err < 0) {
+               err = test_result("perf_header__write_pipe() failed", TEST_FAIL);
+               goto out;
+       }
        err = write_attr(td, sample_type, &id);
-       if (err)
-               return test_result("perf_event__synthesize_attr() failed", TEST_FAIL);
-
-       if (write_comm(td->fd, pid, tid, "test-prog"))
-               return TEST_FAIL;
-
-       if (write_mmap(td->fd, pid, tid, MAP_START, 0x10000, 0, td->prog_file_name))
-               return TEST_FAIL;
-
-       if (write_sample(td, sample_type, id, pid, tid) != TEST_OK)
-               return TEST_FAIL;
-
+       if (err) {
+               err = test_result("perf_event__synthesize_attr() failed", TEST_FAIL);
+               goto out;
+       }
+       if (write_comm(td->fd, pid, tid, "test-prog")) {
+               err = TEST_FAIL;
+               goto out;
+       }
+       if (write_mmap(td->fd, pid, tid, MAP_START, 0x10000, 0, td->prog_file_name)) {
+               err = TEST_FAIL;
+               goto out;
+       }
+       if (write_sample(td, sample_type, id, pid, tid) != TEST_OK) {
+               err = TEST_FAIL;
+               goto out;
+       }
        if (verbose > 1)
                system_cmd("%s script -i %s -D", td->perf, td->perf_data_file_name);
 
-       err = run_perf_script(td);
-       if (err)
-               return TEST_FAIL;
-
-       return TEST_OK;
+       err = run_perf_script(td) ? TEST_FAIL : TEST_OK;
+out:
+       perf_env__exit(&host_env);
+       return err;
 }
 
 static void unlink_path(const char *path)
index ee51378fb0d97d012f30ca5e174de55fa4dcc7b0..c09159083bf00d4b27f7a0f3ca48f54bd61902f4 100644 (file)
@@ -271,6 +271,7 @@ void perf_env__exit(struct perf_env *env)
 
 void perf_env__init(struct perf_env *env)
 {
+       memset(env, 0, sizeof(*env));
 #ifdef HAVE_LIBBPF_SUPPORT
        env->bpf_progs.infos = RB_ROOT;
        env->bpf_progs.btfs = RB_ROOT;