Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf auxtrace: Pass perf_env from session through to mmap read

auxtrace_mmap__read and auxtrace_mmap__read_snapshot end up calling
`evsel__env(NULL)` which returns the global perf_env variable for the
host. Their only call is in perf record. Rather than use the global
variable pass through the perf_env for `perf record`.

Signed-off-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/20250724163302.596743-18-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>

authored by

Ian Rogers and committed by
Namhyung Kim
69ac7472 e4810663

+17 -10
+6 -2
tools/perf/builtin-record.c
··· 775 775 { 776 776 int ret; 777 777 778 - ret = auxtrace_mmap__read(map, rec->itr, &rec->tool, 778 + ret = auxtrace_mmap__read(map, rec->itr, 779 + perf_session__env(rec->session), 780 + &rec->tool, 779 781 record__process_auxtrace); 780 782 if (ret < 0) 781 783 return ret; ··· 793 791 { 794 792 int ret; 795 793 796 - ret = auxtrace_mmap__read_snapshot(map, rec->itr, &rec->tool, 794 + ret = auxtrace_mmap__read_snapshot(map, rec->itr, 795 + perf_session__env(rec->session), 796 + &rec->tool, 797 797 record__process_auxtrace, 798 798 rec->opts.auxtrace_snapshot_size); 799 799 if (ret < 0)
+7 -6
tools/perf/util/auxtrace.c
··· 1890 1890 } 1891 1891 1892 1892 static int __auxtrace_mmap__read(struct mmap *map, 1893 - struct auxtrace_record *itr, 1893 + struct auxtrace_record *itr, struct perf_env *env, 1894 1894 const struct perf_tool *tool, process_auxtrace_t fn, 1895 1895 bool snapshot, size_t snapshot_size) 1896 1896 { ··· 1900 1900 size_t size, head_off, old_off, len1, len2, padding; 1901 1901 union perf_event ev; 1902 1902 void *data1, *data2; 1903 - int kernel_is_64_bit = perf_env__kernel_is_64_bit(evsel__env(NULL)); 1903 + int kernel_is_64_bit = perf_env__kernel_is_64_bit(env); 1904 1904 1905 1905 head = auxtrace_mmap__read_head(mm, kernel_is_64_bit); 1906 1906 ··· 2002 2002 } 2003 2003 2004 2004 int auxtrace_mmap__read(struct mmap *map, struct auxtrace_record *itr, 2005 - const struct perf_tool *tool, process_auxtrace_t fn) 2005 + struct perf_env *env, const struct perf_tool *tool, 2006 + process_auxtrace_t fn) 2006 2007 { 2007 - return __auxtrace_mmap__read(map, itr, tool, fn, false, 0); 2008 + return __auxtrace_mmap__read(map, itr, env, tool, fn, false, 0); 2008 2009 } 2009 2010 2010 2011 int auxtrace_mmap__read_snapshot(struct mmap *map, 2011 - struct auxtrace_record *itr, 2012 + struct auxtrace_record *itr, struct perf_env *env, 2012 2013 const struct perf_tool *tool, process_auxtrace_t fn, 2013 2014 size_t snapshot_size) 2014 2015 { 2015 - return __auxtrace_mmap__read(map, itr, tool, fn, true, snapshot_size); 2016 + return __auxtrace_mmap__read(map, itr, env, tool, fn, true, snapshot_size); 2016 2017 } 2017 2018 2018 2019 /**
+4 -2
tools/perf/util/auxtrace.h
··· 23 23 struct perf_session; 24 24 struct evlist; 25 25 struct evsel; 26 + struct perf_env; 26 27 struct perf_tool; 27 28 struct mmap; 28 29 struct perf_sample; ··· 513 512 size_t len1, void *data2, size_t len2); 514 513 515 514 int auxtrace_mmap__read(struct mmap *map, struct auxtrace_record *itr, 516 - const struct perf_tool *tool, process_auxtrace_t fn); 515 + struct perf_env *env, const struct perf_tool *tool, 516 + process_auxtrace_t fn); 517 517 518 518 int auxtrace_mmap__read_snapshot(struct mmap *map, 519 - struct auxtrace_record *itr, 519 + struct auxtrace_record *itr, struct perf_env *env, 520 520 const struct perf_tool *tool, process_auxtrace_t fn, 521 521 size_t snapshot_size); 522 522