kernel-fxtec-pro1x/tools/perf/tests
Thomas Richter 345dc71a5c perf test: Fix test trace+probe_vfs_getname.sh on s390
[ Upstream commit 2bbc83537614517730e9f2811195004b712de207 ]

This test places a kprobe to function getname_flags() in the kernel
which has the following prototype:

  struct filename *getname_flags(const char __user *filename, int flags, int *empty)

The 'filename' argument points to a filename located in user space memory.

Looking at commit 88903c464321c ("tracing/probe: Add ustring type for
user-space string") the kprobe should indicate that user space memory is
accessed.

Output before:

   [root@m35lp76 perf]# ./perf test 66 67
   66: Use vfs_getname probe to get syscall args filenames   : FAILED!
   67: Check open filename arg using perf trace + vfs_getname: FAILED!
   [root@m35lp76 perf]#

Output after:

   [root@m35lp76 perf]# ./perf test 66 67
   66: Use vfs_getname probe to get syscall args filenames   : Ok
   67: Check open filename arg using perf trace + vfs_getname: Ok
   [root@m35lp76 perf]#

Comments from Masami Hiramatsu:

This bug doesn't happen on x86 or other archs on which user address
space and kernel address space is the same. On some arches (ppc64 in
this case?) user address space is partially or completely the same as
kernel address space.

(Yes, they switch the world when running into the kernel) In this case,
we need to use different data access functions for each space.

That is why I introduced the "ustring" type for kprobe events.

As far as I can see, Thomas's patch is sane. Thomas, could you show us
your result on your test environment?

Comments from Thomas Richter:

Test results for s/390 included above.

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Link: http://lore.kernel.org/lkml/20200217102111.61137-1-tmricht@linux.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-10-01 13:14:34 +02:00
..
attr perf tools: Fix crash on synthesizing the unit 2018-12-17 09:24:31 +01:00
shell perf test: Fix test trace+probe_vfs_getname.sh on s390 2020-10-01 13:14:34 +02:00
.gitignore
attr.c perf tools: Fix snprint warnings for gcc 8 2018-03-19 10:00:43 -03:00
attr.py perf test: Fix perf_event_attr test failure 2019-02-12 19:47:11 +01:00
backward-ring-buffer.c perf mmap: Simplify perf_mmap__read_init() 2018-03-08 10:05:53 -03:00
bitmap.c perf tools: Drop unneeded bitmap_zero() calls 2018-08-08 15:55:44 -03:00
bp_account.c perf tests bp_account: Fix build with clang-6 2018-03-19 13:51:54 -03:00
bp_signal.c perf test: Fix the "signal" test inline assembly 2020-09-23 12:11:00 +02:00
bp_signal_overflow.c
bpf-script-example.c perf test BPF: Fixup BPF test using epoll_pwait syscall function probe 2018-04-18 15:35:53 -03:00
bpf-script-test-kbuild.c perf tests bpf: Remove unused ptrace.h include from LLVM test 2018-04-12 10:33:24 -03:00
bpf-script-test-prologue.c
bpf-script-test-relocation.c
bpf.c perf mmap: Simplify perf_mmap__read_init() 2018-03-08 10:05:53 -03:00
Build perf tests: Add mem2node object test 2018-03-16 13:52:48 -03:00
builtin-test.c perf tests: Fix indexing when invoking subtests 2018-07-31 10:52:51 -03:00
clang.c
code-reading.c perf tools: Get rid of dso__needs_decompress() call in read_object_code() 2018-08-20 08:54:59 -03:00
cpumap.c
dso-data.c
dwarf-unwind.c
event-times.c
event_update.c
evsel-roundtrip-name.c
evsel-tp-sched.c perf tests: Fix a memory leak in test__perf_evsel__tp_sched_test() 2019-04-20 09:15:58 +02:00
expr.c perf tests: Fix memory leak by expr__find_other() in test__expr() 2019-04-20 09:15:58 +02:00
fdarray.c
hists_common.c perf symbols: Unify symbol maps 2018-04-27 10:47:06 -03:00
hists_common.h
hists_cumulate.c
hists_filter.c
hists_link.c
hists_output.c
is_printable_array.c
keep-tracking.c perf mmap: Simplify perf_mmap__read_init() 2018-03-08 10:05:53 -03:00
kmod-path.c perf tools: Remove ext from struct kmod_path 2018-08-20 08:54:59 -03:00
llvm.c
llvm.h
make
mem.c perf tools: Fix snprint warnings for gcc 8 2018-03-19 10:00:43 -03:00
mem2node.c perf tools: Drop unneeded bitmap_zero() calls 2018-08-08 15:55:44 -03:00
mmap-basic.c perf tests mmap: Show which tracepoint is failing 2018-04-18 15:35:52 -03:00
mmap-thread-lookup.c perf test mmap-thread-lookup: Initialize variable to suppress memory sanitizer warning 2019-07-31 07:27:06 +02:00
openat-syscall-all-cpus.c perf tests: Fix a memory leak of cpu_map object in the openat_syscall_event_on_all_cpus test 2019-04-20 09:15:58 +02:00
openat-syscall-tp-fields.c perf mmap: Simplify perf_mmap__read_init() 2018-03-08 10:05:53 -03:00
openat-syscall.c
parse-events.c perf test 6: Fix missing kvm module load for s390 2019-07-26 09:14:05 +02:00
parse-no-sample-id-all.c
perf-hooks.c perf tests: Avoid raising SEGV using an obvious NULL dereference 2019-11-06 13:05:41 +01:00
perf-record.c perf mmap: Simplify perf_mmap__read_init() 2018-03-08 10:05:53 -03:00
perf-targz-src-pkg
pmu.c perf test: Free formats for perf pmu parse test 2020-09-23 12:11:00 +02:00
python-use.c perf test: Use header file util/debug.h 2018-06-04 10:28:53 -03:00
sample-parsing.c
sdt.c
stat.c
sw-clock.c perf mmap: Simplify perf_mmap__read_init() 2018-03-08 10:05:53 -03:00
switch-tracking.c perf mmap: Simplify perf_mmap__read_init() 2018-03-08 10:05:53 -03:00
task-exit.c perf test: Report failure for mmap events 2019-12-31 16:35:14 +01:00
tests.h perf tests: Add mem2node object test 2018-03-16 13:52:48 -03:00
thread-map.c
thread-mg-share.c
topology.c perf test session topology: Fix test on s390 2018-06-25 11:59:35 -03:00
unit_number__scnprintf.c
vmlinux-kallsyms.c perf machine: Ditch find_kernel_function variants 2018-04-30 12:20:54 -03:00