Re: [PATCH v10 00/29] perf tool: Add evsel to perf_sample

Ian Rogers
2026-04-13T00:53:10Z

On Sun, Apr 12, 2026 at 1:10 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> Hi Ian,
>
> On Sat, Apr 11, 2026 at 07:08:03PM -0700, Ian Rogers wrote:
> > Nearly all perf code ends up passing an evsel with the perf_sample,
> > which is problematic if you want to rewrite the evsel such as with
> > off-CPU processing - all uses of the evsel need fixing up. Previously
> > I'd mailed this patch as an RFC with everything combined:
> > https://lore.kernel.org/lkml/20260126071822.447368-1-irogers@google.com/
> > and there was a request to break it up.
> >
> > v10: Changes to some of the bounds checks as prompted by Sashiko.
> >
> > v9: Clean up some error path nits caught by Sashiko and simple bound
> > checks Sashiko recommended.
> > https://lore.kernel.org/linux-perf-users/20260411191710.524998-1-irogers@google.com/
> >
> > v8: Fix address sanitizer issues with kwork and move patches, along
> > with bound check additions, to end of series.
> > https://lore.kernel.org/linux-perf-users/20260411065718.372240-1-irogers@google.com/
> >
> > v7: Separate out kwork work->name to a strdup into its own patch, now patch 4.
> > https://lore.kernel.org/linux-perf-users/20260408072601.210837-1-irogers@google.com/
> >
> > v6: Address more Sashiko feedback.
> > https://lore.kernel.org/lkml/20260404034325.3172592-1-irogers@google.com/
> >
> > v5: Address feedback from Sashiko and Namhyung.
> > https://lore.kernel.org/lkml/20260403204017.2919994-1-irogers@google.com/
> >
> > v4: Fix more sashiko issues: bounds checks, memory safety, making
> > refactors better, inconsistent evsels, mmap2 buildid injection
> > choice of evsel, mismatched function arguments.
> > https://sashiko.dev/#/patchset/20260320080835.724836-1-irogers%40google.com
> > https://lore.kernel.org/lkml/20260320192627.368357-1-irogers@google.com/
> >
> > v3: Fix various sashiko review comments particularly about unintended
> > behavior changes.
> > https://lore.kernel.org/lkml/20260320080835.724836-1-irogers@google.com/
> >
> > v2: Add review feedback on the first 2 patches from Namhyung, fix a
> > missed evsel assignment running event2evsel in builtin-inject.
> > https://lore.kernel.org/lkml/20260319232334.287517-1-irogers@google.com/
> >
> > v1: https://lore.kernel.org/lkml/20260209174032.4142096-1-irogers@google.com/
> >
> > Ian Rogers (29):
> > perf sample: Fix documentation typo
> > perf tool: Remove evsel from tool APIs that pass the sample
> > perf kvm: Don't pass evsel with sample
> > perf evsel: Refactor evsel tracepoint sample accessors perf_sample
> > perf trace: Don't pass evsel with sample
> > perf callchain: Don't pass evsel and sample
> > perf lock: Only pass sample to handlers
> > perf lock: Constify trace_lock_handler variables
> > perf hist: Remove evsel parameter from inc samples functions
> > perf db-export: Remove evsel from struct export_sample
> > perf hist: Remove evsel from struct hist_entry_iter
> > perf report: Directly use sample->evsel to avoid computing from
> > sample->id
> > perf annotate: Don't pass evsel to add_sample
> > perf inject: Don't pass evsel with sample
> > perf kmem: Don't pass evsel with sample
> > perf kwork: Don't pass evsel with sample
> > perf sched: Don't pass evsel with sample
> > perf timechart: Don't pass evsel with sample
> > perf trace: Don't pass evsel with sample
> > perf evlist: Try to avoid computing evsel from sample
> > perf script: Don't pass evsel with sample
> > perf s390-sample-raw: Don't pass evsel or its PMU with sample
> > perf evsel: Don't pass evsel with sample
> > perf kmem: Add bounds checks to tracepoint read values
> > perf sched: Bounds check CPU in sched switch events
> > perf timechart: Bounds check CPU
> > perf evsel: Add bounds checking to trace point raw data accessors
> > perf kwork: Fix address sanitizer issues
> > perf kwork: Fix memory management of kwork_work
>
> I've picked the first 23 patches to tmp.perf-tools-next as the rest
> still has some issues. Also I've touched some commits to either remove
> some parts or split them into separate commits.
>
> Please take a look.

Hi Namhyung,

thanks for doing this but I've done a similar clean up. To totally
separate the evsel refactoring from the rest of the changes, to fix
the address sanitizer issues with kwork, etc. I'll incorporate your
changes and then resend the series.

Thanks,
Ian

> Thanks,
> Namhyung
>
> >
> > tools/perf/builtin-annotate.c | 28 +-
> > tools/perf/builtin-c2c.c | 6 +-
> > tools/perf/builtin-diff.c | 5 +-
> > tools/perf/builtin-inject.c | 75 +++---
> > tools/perf/builtin-kmem.c | 95 ++++---
> > tools/perf/builtin-kvm.c | 22 +-
> > tools/perf/builtin-kwork.c | 253 +++++++++++-------
> > tools/perf/builtin-lock.c | 128 +++++----
> > tools/perf/builtin-mem.c | 1 -
> > tools/perf/builtin-record.c | 3 +-
> > tools/perf/builtin-report.c | 38 ++-
> > tools/perf/builtin-sched.c | 188 ++++++-------
> > tools/perf/builtin-script.c | 22 +-
> > tools/perf/builtin-timechart.c | 170 +++++++-----
> > tools/perf/builtin-top.c | 19 +-
> > tools/perf/builtin-trace.c | 121 +++++----
> > tools/perf/tests/hists_cumulate.c | 1 -
> > tools/perf/tests/hists_filter.c | 1 -
> > tools/perf/tests/hists_output.c | 1 -
> > tools/perf/tests/mmap-basic.c | 4 +-
> > tools/perf/tests/openat-syscall-tp-fields.c | 2 +-
> > tools/perf/tests/switch-tracking.c | 9 +-
> > tools/perf/util/annotate.c | 19 +-
> > tools/perf/util/annotate.h | 6 +-
> > tools/perf/util/bpf_kwork.c | 14 +-
> > tools/perf/util/build-id.c | 3 +-
> > tools/perf/util/build-id.h | 7 +-
> > tools/perf/util/callchain.c | 8 +-
> > tools/perf/util/callchain.h | 6 +-
> > tools/perf/util/data-convert-bt.c | 2 +-
> > tools/perf/util/data-convert-json.c | 5 +-
> > tools/perf/util/db-export.c | 13 +-
> > tools/perf/util/db-export.h | 3 +-
> > tools/perf/util/evsel.c | 94 ++++---
> > tools/perf/util/evsel.h | 12 +-
> > tools/perf/util/hist.c | 26 +-
> > tools/perf/util/hist.h | 3 +-
> > tools/perf/util/intel-pt.c | 2 +-
> > tools/perf/util/intel-tpebs.c | 3 +-
> > tools/perf/util/jitdump.c | 2 +-
> > .../perf/util/kvm-stat-arch/kvm-stat-arm64.c | 19 +-
> > .../util/kvm-stat-arch/kvm-stat-loongarch.c | 17 +-
> > .../util/kvm-stat-arch/kvm-stat-powerpc.c | 17 +-
> > .../perf/util/kvm-stat-arch/kvm-stat-riscv.c | 17 +-
> > tools/perf/util/kvm-stat-arch/kvm-stat-s390.c | 20 +-
> > tools/perf/util/kvm-stat-arch/kvm-stat-x86.c | 70 ++---
> > tools/perf/util/kvm-stat.c | 19 +-
> > tools/perf/util/kvm-stat.h | 18 +-
> > tools/perf/util/kwork.h | 11 +-
> > tools/perf/util/machine.c | 14 +-
> > tools/perf/util/machine.h | 3 -
> > tools/perf/util/s390-sample-raw.c | 31 ++-
> > tools/perf/util/sample.h | 2 +-
> > .../util/scripting-engines/trace-event-perl.c | 23 +-
> > .../scripting-engines/trace-event-python.c | 47 ++--
> > tools/perf/util/session.c | 38 +--
> > tools/perf/util/synthetic-events.c | 68 +++--
> > tools/perf/util/synthetic-events.h | 2 -
> > tools/perf/util/tool.c | 4 +-
> > tools/perf/util/tool.h | 4 +-
> > tools/perf/util/trace-event-scripting.c | 5 +-
> > tools/perf/util/trace-event.h | 3 -
> > 62 files changed, 967 insertions(+), 905 deletions(-)
> >
> > --
> > 2.53.0.1213.gd9a14994de-goog
> >