perf lock: Provide a host_env for session new
authorIan Rogers <irogers@google.com>
Sat, 13 Sep 2025 00:01:29 +0000 (17:01 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Sat, 13 Sep 2025 00:53:03 +0000 (17:53 -0700)
When "perf lock con" is run in a live mode, with no data file, a host
environment must be provided. Testing missed this as a failing assert
was creating the 1 line of expected stderr output.

  $ sudo perf lock con -ab true
  perf: util/session.c:195: __perf_session__new: Assertion `host_env != NULL' failed.
  Aborted

Fixes: 525a599badeeafba ("perf env: Remove global perf_env")
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/builtin-lock.c

index fd49703021fd268df0fc748aaca897eabf379434..078634461df2701f80e04df69122d8e3dc36e8a1 100644 (file)
@@ -2009,6 +2009,7 @@ static int __cmd_contention(int argc, const char **argv)
                .owner = show_lock_owner,
                .cgroups = RB_ROOT,
        };
+       struct perf_env host_env;
 
        lockhash_table = calloc(LOCKHASH_SIZE, sizeof(*lockhash_table));
        if (!lockhash_table)
@@ -2024,7 +2025,10 @@ static int __cmd_contention(int argc, const char **argv)
        eops.mmap                = perf_event__process_mmap;
        eops.tracing_data        = perf_event__process_tracing_data;
 
-       session = perf_session__new(use_bpf ? NULL : &data, &eops);
+       perf_env__init(&host_env);
+       session = __perf_session__new(use_bpf ? NULL : &data, &eops,
+                               /*trace_event_repipe=*/false, &host_env);
+
        if (IS_ERR(session)) {
                pr_err("Initializing perf session failed\n");
                err = PTR_ERR(session);
@@ -2142,6 +2146,7 @@ out_delete:
        evlist__delete(con.evlist);
        lock_contention_finish(&con);
        perf_session__delete(session);
+       perf_env__exit(&host_env);
        zfree(&lockhash_table);
        return err;
 }