linux/tools/testing/selftests
Andrii Nakryiko 00a0fa2d7d selftests/bpf: Add urandom_read shared lib and USDTs
Extend urandom_read helper binary to include USDTs of 4 combinations:
semaphore/semaphoreless (refcounted and non-refcounted) and based in
executable or shared library. We also extend urandom_read with ability
to report it's own PID to parent process and wait for parent process to
ready itself up for tracing urandom_read. We utilize popen() and
underlying pipe properties for proper signaling.

Once urandom_read is ready, we add few tests to validate that libbpf's
USDT attachment handles all the above combinations of semaphore (or lack
of it) and static or shared library USDTs. Also, we validate that libbpf
handles shared libraries both with PID filter and without one (i.e., -1
for PID argument).

Having the shared library case tested with and without PID is important
because internal logic differs on kernels that don't support BPF
cookies. On such older kernels, attaching to USDTs in shared libraries
without specifying concrete PID doesn't work in principle, because it's
impossible to determine shared library's load address to derive absolute
IPs for uprobe attachments. Without absolute IPs, it's impossible to
perform correct look up of USDT spec based on uprobe's absolute IP (the
only kind available from BPF at runtime). This is not the problem on
newer kernels with BPF cookie as we don't need IP-to-ID lookup because
BPF cookie value *is* spec ID.

So having those two situations as separate subtests is good because
libbpf CI is able to test latest selftests against old kernels (e.g.,
4.9 and 5.5), so we'll be able to disable PID-less shared lib attachment
for old kernels, but will still leave PID-specific one enabled to validate
this legacy logic is working correctly.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Dave Marchevsky <davemarchevsky@fb.com>
Link: https://lore.kernel.org/bpf/20220404234202.331384-8-andrii@kernel.org
2022-04-05 13:16:08 -07:00
..
alsa kselftest: alsa: fix spelling mistake "desciptor" -> "descriptor" 2022-02-08 08:24:42 +01:00
arm64 kselftest/arm64: Log the PIDs of the parent and child in sve-ptrace 2022-03-07 21:46:57 +00:00
bpf selftests/bpf: Add urandom_read shared lib and USDTs 2022-04-05 13:16:08 -07:00
breakpoints
capabilities
cgroup selftests: memcg: test high limit for single entry allocation 2022-03-22 15:57:02 -07:00
clone3 selftests: fixup build warnings in pidfd / clone3 tests 2022-02-04 13:07:07 -07:00
core selftests/core: remove ARRAY_SIZE define from close_range_test.c 2021-12-10 17:50:38 -07:00
cpu-hotplug
cpufreq selftests: cpufreq: Write test output to stdout as well 2022-01-25 13:20:03 -07:00
damon selftests/damon: add a test for DAMON sysfs interface 2022-03-22 15:57:13 -07:00
dma dma-mapping: benchmark: extract a common header file for map_benchmark definition 2022-03-10 07:41:14 +01:00
dmabuf-heaps
drivers platform-drivers-x86 for v5.18-1 2022-03-25 12:14:39 -07:00
efivarfs
exec linux-kselftest-next-5.18-rc1 2022-03-23 12:53:00 -07:00
filesystems
firmware
fpu
ftrace selftests/ftrace: Do not trace do_softirq because of PREEMPT_RT 2022-02-14 13:28:17 -07:00
futex selftests: futex: Add the uapi headers include variable 2022-02-23 17:20:32 -07:00
gpio gpio updates for v5.17 2022-01-11 12:31:35 -08:00
ia64
intel_pstate
ipc
ir selftests/ir: fix build with ancient kernel headers 2022-02-04 13:14:41 -07:00
kcmp
kexec selftests/kexec: Enable secureboot tests for PowerPC 2022-01-05 11:44:57 -05:00
kmod
kselftest selftests/kselftest/runner.sh: Pass optional command parameters in environment 2022-02-23 17:14:36 -07:00
kvm ARM: 2022-03-24 11:58:57 -07:00
landlock selftests: landlock: Add the uapi headers include variable 2022-02-23 17:20:47 -07:00
lib
livepatch livepatch: Skip livepatch tests if ftrace cannot be configured 2022-02-23 16:42:00 +01:00
lkdtm powerpc updates for 5.18 2022-03-25 09:39:36 -07:00
locking
media_tests
membarrier
memfd selftests/memfd: clean up mapping in mfd_fail_write 2022-02-26 09:51:17 -08:00
memory-hotplug mm/memory_hotplug: remove CONFIG_MEMORY_HOTPLUG_SPARSE 2021-11-06 13:30:42 -07:00
mincore selftests: skip mincore.check_file_mmap when fs lacks needed support 2022-01-27 16:40:45 -07:00
mount selftests/mount: remove unneeded conversion to bool 2021-12-10 16:46:01 -07:00
mount_setattr tests: fix idmapped mount_setattr test 2022-02-11 09:08:20 +01:00
move_mount_set_group selftests/move_mount_set_group remove unneeded conversion to bool 2021-12-10 16:46:01 -07:00
mqueue
nci
net Revert "selftests: net: Add tls config dependency for tls selftests" 2022-03-28 16:15:54 -07:00
netfilter linux-kselftest-next-5.18-rc1 2022-03-23 12:53:00 -07:00
nsfs
ntb
openat2 selftests: openat2: Skip testcases that fail with EOPNOTSUPP 2022-01-27 16:31:07 -07:00
perf_events selftests/perf_events: Test modification of perf_event_attr::sig_data 2022-02-02 13:11:40 +01:00
pid_namespace
pidfd selftests: fixup build warnings in pidfd / clone3 tests 2022-02-04 13:07:07 -07:00
powerpc selftest/powerpc: Add PAPR sysfs attributes sniff test 2022-03-08 00:05:00 +11:00
prctl
proc procfs: do not list TID 0 in /proc/<pid>/task 2021-11-09 10:02:48 -08:00
pstore
ptp testptp: add option to shift clock by nanoseconds 2022-02-22 17:03:40 -08:00
ptrace
rcutorture rcutorture: Provide non-power-of-two Tasks RCU scenarios 2022-02-08 11:19:15 -08:00
resctrl
rlimits
rseq RISC-V Patches for the 5.18 Merge Window, Part 1 2022-03-25 10:11:38 -07:00
rtc selftests/rtc: continuously read RTC in a loop for 30s 2022-02-25 17:00:51 -07:00
safesetid
sched
seccomp selftests/seccomp: Fix seccomp failure by adding missing headers 2022-02-14 11:14:38 -07:00
sgx selftests/sgx: Treat CC as one argument 2022-02-17 11:55:17 -08:00
sigaltstack
size
sparc64 selftests/sparc64: remove ARRAY_SIZE define from adi-test 2021-12-10 17:51:15 -07:00
splice
static_keys
sync
syscall_user_dispatch
sysctl
tc-testing selftests: tc-testing: Increase timeout in tdc config file 2022-03-14 10:27:52 +00:00
timens selftests/timens: remove ARRAY_SIZE define from individual tests 2021-12-10 17:51:20 -07:00
timers selftests: timers: Remove unneeded semicolon 2021-12-10 16:46:00 -07:00
tmpfs
tpm2 selftests: tpm: add async space test with noneexisting handle 2022-03-08 10:33:17 +02:00
uevent
user
user_events user_events: Add self-test for validator boundaries 2022-02-10 22:38:08 -05:00
vDSO nds32: Remove the architecture 2022-03-07 13:54:59 +01:00
vm selftests: kselftest framework: provide "finished" helper 2022-03-24 19:06:51 -07:00
watchdog
wireguard wireguard: selftests: simplify RNG seeding 2022-03-30 19:14:08 -07:00
x86 Merge branch 'akpm' (patches from Andrew) 2022-03-22 16:11:53 -07:00
zram selftests/zram: Adapt the situation that /dev/zram0 is being used 2022-01-27 10:59:02 -07:00
.gitignore selftests: add kselftest_install to .gitignore 2022-03-03 15:16:57 -07:00
gen_kselftest_tar.sh
kselftest_deps.sh
kselftest_harness.h kselftest: signal all child processes 2022-01-25 13:48:21 -07:00
kselftest_install.sh
kselftest_module.h
kselftest.h selftests: kselftest framework: provide "finished" helper 2022-03-24 19:06:51 -07:00
lib.mk selftests: cgroup: build error multiple outpt files 2021-12-10 16:46:01 -07:00
Makefile selftests: Fix build when $(O) points to a relative path 2022-03-03 15:18:13 -07:00
run_kselftest.sh