linux-uconsole/tools/perf
Leo Yan 351075bcfe perf session: Correct buffer copying when peeking events
[ Upstream commit 197eecb6ec ]

When peeking an event, it has a short path and a long path.  The short
path uses the session pointer "one_mmap_addr" to directly fetch the
event; and the long path needs to read out the event header and the
following event data from file and fill into the buffer pointer passed
through the argument "buf".

The issue is in the long path that it copies the event header and event
data into the same destination address which pointer "buf", this means
the event header is overwritten.  We are just lucky to run into the
short path in most cases, so we don't hit the issue in the long path.

This patch adds the offset "hdr_sz" to the pointer "buf" when copying
the event data, so that it can reserve the event header which can be
used properly by its caller.

Fixes: 5a52f33adf ("perf session: Add perf_session__peek_event()")
Signed-off-by: Leo Yan <leo.yan@linaro.org>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20210605052957.1070720-1-leo.yan@linaro.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-06-16 12:01:46 +02:00
..
arch perf test: Avoid an msan warning in a copied stack. 2020-11-16 14:10:58 -03:00
bench tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf bench mem memcpy' 2020-11-12 17:55:41 -03:00
Documentation perf c2c: Update documentation for metrics reorganization 2020-10-15 12:02:12 -03:00
examples/bpf Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
include/bpf perf bpf: Remove bpf/ subdir from bpf.h headers used to build bpf events 2020-02-18 10:13:28 -03:00
jvmti perf jvmti: Remove redundant jitdump line table entries 2020-05-29 16:51:38 -03:00
pmu-events perf jevents: Fix getting maximum number of fds 2021-06-03 09:00:39 +02:00
python tweewide: Fix most Shebang lines 2021-05-22 11:40:55 +02:00
scripts perf scripts python: exported-sql-viewer.py: Fix warning display 2021-06-03 09:00:28 +02:00
tests perf test: Fix unaligned access in sample parsing test 2021-03-04 11:38:10 +01:00
trace perf beauty: Fix fsconfig generator 2021-05-14 09:50:38 +02:00
ui perf hists browser: Increase size of 'buf' in perf_evsel__hists_browse() 2020-11-03 09:11:45 -03:00
util perf session: Correct buffer copying when peeking events 2021-06-16 12:01:46 +02:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
Build
builtin-annotate.c perf evsel: Rename perf_evsel__resort*() to evsel__resort*() 2020-05-28 10:03:24 -03:00
builtin-bench.c perf bench: Add build-id injection benchmark 2020-10-13 10:59:42 -03:00
builtin-buildid-cache.c perf tools: Pass build_id object to build_id__sprintf() 2020-10-14 08:46:22 -03:00
builtin-buildid-list.c
builtin-c2c.c perf c2c: Add metrics "RMT Load Hit" 2020-10-15 09:34:51 -03:00
builtin-config.c
builtin-data.c perf data: Add support to store time of day in CTF data conversion 2020-08-06 09:43:37 -03:00
builtin-diff.c perf diff: Fix error return value in __cmd_diff() 2020-11-27 14:21:23 -03:00
builtin-evlist.c perf evsel: Rename perf_evsel__fprintf() to evsel__fprintf() 2020-05-28 10:03:24 -03:00
builtin-ftrace.c perf ftrace: Fix access to pid in array when setting a pid filter 2021-05-07 11:04:31 +02:00
builtin-help.c
builtin-inject.c perf inject: Fix repipe usage 2021-04-14 08:42:10 +02:00
builtin-kallsyms.c
builtin-kmem.c perf kmem: Pass additional arguments to 'perf record' 2020-07-10 09:37:55 -03:00
builtin-kvm.c perf evlist: Fix the class prefix for 'struct evlist' 'add' evsel methods 2020-06-22 16:28:09 -03:00
builtin-list.c perf list: Remove dead code in argument check 2020-09-09 11:12:10 -03:00
builtin-lock.c perf lock: Don't free "lock_seq_stat" if read_count isn't zero 2020-11-12 17:55:41 -03:00
builtin-mem.c perf c2c: Fix 'perf c2c record -e list' to show the default events used 2020-05-28 10:03:25 -03:00
builtin-probe.c perf probe: Do not show the skipped events 2020-05-28 10:03:24 -03:00
builtin-record.c perf record: Fix continue profiling after draining the buffer 2021-03-04 11:38:09 +01:00
builtin-report.c perf report: Disable ordered_events for raw dump 2020-09-01 12:20:25 -03:00
builtin-sched.c perf sched: Show start of latency as well 2020-10-13 11:01:42 -03:00
builtin-script.c perf script: Display negative tid in non-sample events 2020-09-17 16:06:22 -03:00
builtin-stat.c perf tools: Allow creation of cgroup without open 2020-09-28 09:18:06 -03:00
builtin-timechart.c perf tools: Replace zero-length array with flexible-array 2020-05-28 10:03:27 -03:00
builtin-top.c perf top: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set 2020-08-21 10:22:23 -03:00
builtin-trace.c perf trace: Fix segfault when trying to trace events by cgroup 2020-11-03 08:31:03 -03:00
builtin-version.c perf tools: Make GTK2 support opt-in 2020-09-04 17:11:59 -03:00
builtin.h
check-headers.sh perf tools: Separate the checking of headers only used to build beautification tables 2020-09-29 08:56:38 -03:00
command-list.txt
CREDITS
design.txt perf tools: Support CAP_PERFMON capability 2020-04-16 12:19:08 -03:00
Makefile tools: Let O= makes handle a relative path with -C option 2020-03-06 17:08:28 -03:00
Makefile.config perf tools: Fix dynamic libbpf link 2021-05-19 10:13:13 +02:00
Makefile.perf perf build: Fix ccache usage in $(CC) when generating arch errno table 2021-03-17 17:06:16 +01:00
MANIFEST
perf-archive.sh
perf-completion.sh
perf-read-vdso.c
perf-sys.h perf tests: Call test_attr__open() directly 2020-09-10 11:55:37 -03:00
perf-with-kcore.sh
perf.c
perf.h