android_kernel_motorola_sm6375/tools/perf
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Arnaldo Carvalho de Melo 38dffe995b perf python: Check if there is space to copy all the event
[ Upstream commit 89aaeaf84231157288035b366cb6300c1c6cac64 ]

The pyrf_event__new() method copies the event obtained from the perf
ring buffer to a structure that will then be turned into a python object
for further consumption, so it copies perf_event.header.size bytes to
its 'event' member:

  $ pahole -C pyrf_event /tmp/build/perf-tools-next/python/perf.cpython-312-x86_64-linux-gnu.so
  struct pyrf_event {
  	PyObject                   ob_base;              /*     0    16 */
  	struct evsel *             evsel;                /*    16     8 */
  	struct perf_sample         sample;               /*    24   312 */

  	/* XXX last struct has 7 bytes of padding, 2 holes */

  	/* --- cacheline 5 boundary (320 bytes) was 16 bytes ago --- */
  	union perf_event           event;                /*   336  4168 */

  	/* size: 4504, cachelines: 71, members: 4 */
  	/* member types with holes: 1, total: 2 */
  	/* paddings: 1, sum paddings: 7 */
  	/* last cacheline: 24 bytes */
  };

  $

It was doing so without checking if the event just obtained has more
than that space, fix it.

This isn't a proper, final solution, as we need to support larger
events, but for the time being we at least bounds check and document it.

Fixes: 877108e42b ("perf tools: Initial python binding")
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Reviewed-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/20250312203141.285263-7-acme@kernel.org
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-04-10 14:29:42 +02:00
..
arch
bench perf bench: Fix undefined behavior in cmpworker() 2025-03-13 12:43:08 +01:00
Documentation
examples/bpf
include/bpf
jvmti
lib
pmu-events perf jevents: Make build dependency on test JSONs 2023-09-23 11:00:05 +02:00
python
scripts
tests perf test uprobe_from_different_cu: Skip if there is no gcc 2023-08-11 11:53:55 +02:00
trace perf trace: Add the syscall_arg_fmt pointer to syscall_arg 2023-01-18 11:41:28 +01:00
ui perf hists browser: Fix hierarchy mode header 2023-09-23 11:00:00 +02:00
util perf python: Check if there is space to copy all the event 2025-04-10 14:29:42 +02:00
.gitignore
Build
builtin-annotate.c
builtin-bench.c
builtin-buildid-cache.c
builtin-buildid-list.c
builtin-c2c.c perf c2c: Fix sorting in percent_rmt_hitm_cmp() 2022-06-14 18:11:56 +02:00
builtin-config.c
builtin-data.c
builtin-diff.c
builtin-evlist.c
builtin-ftrace.c
builtin-help.c
builtin-inject.c
builtin-kallsyms.c
builtin-kmem.c
builtin-kvm.c
builtin-list.c
builtin-lock.c
builtin-mem.c
builtin-probe.c
builtin-record.c perf record: Fix possible incorrect free in record__switch_output() 2024-03-26 18:22:19 -04:00
builtin-report.c perf report: Fix misleading help message about --demangle 2025-03-13 12:42:56 +01:00
builtin-sched.c perf sched timehist: Fixed timestamp error when unable to confirm event sched_in time 2024-11-08 16:20:31 +01:00
builtin-script.c
builtin-stat.c
builtin-timechart.c
builtin-top.c perf top: Don't complain about lack of vmlinux when not resolving some kernel samples 2025-03-13 12:42:56 +01:00
builtin-trace.c perf trace: Fix runtime error of index out of bounds 2025-03-13 12:43:00 +01:00
builtin-version.c
builtin.h
check-headers.sh x86: xen: insn: Decode Xen and KVM emulate-prefix signature 2022-05-15 19:54:47 +02:00
command-list.txt
CREDITS
design.txt
Makefile
Makefile.config perf tools: Add an option to build without libbfd 2023-09-23 11:00:05 +02:00
Makefile.perf
MANIFEST
perf-archive.sh
perf-completion.sh perf tools: Fix auto-complete on aarch64 2023-03-11 16:43:49 +01:00
perf-read-vdso.c
perf-sys.h
perf-with-kcore.sh
perf.c perf tools: Fix perf's libperf_print callback 2022-04-15 14:18:38 +02:00
perf.h