From 3481709c2e17e2b70faff7893baaf27c4274f832 Mon Sep 17 00:00:00 2001 From: Kenta Tada Date: Mon, 24 Jan 2022 23:16:20 +0900 Subject: [PATCH 1/3] selftests/bpf: Extract syscall wrapper ANBZ: #1912 commit 78a2054156dd6265619b230cc5372b74f9ba5233 upstream. Extract the helper to set up SYS_PREFIX for fentry and kprobe selftests that use __x86_sys_* attach functions. Suggested-by: Andrii Nakryiko Signed-off-by: Kenta Tada Signed-off-by: Andrii Nakryiko Link: https://lore.kernel.org/bpf/20220124141622.4378-2-Kenta.Tada@sony.com Signed-off-by: Qiao Ma --- tools/testing/selftests/bpf/progs/bpf_misc.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/bpf_misc.h diff --git a/tools/testing/selftests/bpf/progs/bpf_misc.h b/tools/testing/selftests/bpf/progs/bpf_misc.h new file mode 100644 index 000000000000..0b78bc9b1b4c --- /dev/null +++ b/tools/testing/selftests/bpf/progs/bpf_misc.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __BPF_MISC_H__ +#define __BPF_MISC_H__ + +#if defined(__TARGET_ARCH_x86) +#define SYSCALL_WRAPPER 1 +#define SYS_PREFIX "__x64_" +#elif defined(__TARGET_ARCH_s390) +#define SYSCALL_WRAPPER 1 +#define SYS_PREFIX "__s390x_" +#elif defined(__TARGET_ARCH_arm64) +#define SYSCALL_WRAPPER 1 +#define SYS_PREFIX "__arm64_" +#else +#define SYSCALL_WRAPPER 0 +#define SYS_PREFIX "" +#endif + +#endif -- Gitee From d2d76dd974d5b3b15935fa846e3f3c0ae1e19c75 Mon Sep 17 00:00:00 2001 From: "Naveen N. Rao" Date: Fri, 4 Feb 2022 17:05:19 +0530 Subject: [PATCH 2/3] selftests/bpf: Use "__se_" prefix on architectures without syscall wrapper ANBZ: #1912 commit 046b841ea7c528931e7d2e74d5e668aa6c94c1fc upstream. On architectures that don't use a syscall wrapper, sys_* function names are set as an alias of __se_sys_* functions. Due to this, there is no BTF associated with sys_* function names. This results in some of the test progs failing to load. Set the SYS_PREFIX to "__se_" to fix this issue. Fixes: 38261f369fb905 ("selftests/bpf: Fix probe_user test failure with clang build kernel") Signed-off-by: Naveen N. Rao Signed-off-by: Andrii Nakryiko Link: https://lore.kernel.org/bpf/013d632aacd3e41290445c0025db6a7055ec6e18.1643973917.git.naveen.n.rao@linux.vnet.ibm.com Signed-off-by: Qiao Ma --- tools/testing/selftests/bpf/progs/bpf_misc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/bpf/progs/bpf_misc.h b/tools/testing/selftests/bpf/progs/bpf_misc.h index 0b78bc9b1b4c..5bb11fe595a4 100644 --- a/tools/testing/selftests/bpf/progs/bpf_misc.h +++ b/tools/testing/selftests/bpf/progs/bpf_misc.h @@ -13,7 +13,7 @@ #define SYS_PREFIX "__arm64_" #else #define SYSCALL_WRAPPER 0 -#define SYS_PREFIX "" +#define SYS_PREFIX "__se_" #endif #endif -- Gitee From df9a5c6b7d10f0d21dde169074b4c5330580e644 Mon Sep 17 00:00:00 2001 From: Qiao Ma Date: Fri, 26 Aug 2022 15:43:57 +0800 Subject: [PATCH 3/3] anolis: selftests/bpf: add arch prefix for kprobe syscall functions ANBZ: #1912 This patch is extracted from 32c03c4954a03d46f603f94acac9d2705bd5c9c6 ("selftests/bpf: Use target-less SEC() definitions in various tests"). When testing test_progs, test_attach_probe will report such failure information: > test_attach_probe:PASS:get_base_addr 0 nsec > test_attach_probe:PASS:skel_open 0 nsec > test_attach_probe:PASS:check_bss 0 nsec > libbpf: kprobe perf_event_open() failed: No such file or directory > libbpf: prog 'handle_kprobe': failed to create kprobe 'sys_nanosleep' > perf event: No such file or directory > test_attach_probe:FAIL:attach_kprobe err -2 > #2 attach_probe:FAIL On arch arm64, we need to kprobe __arm64_sys_nanosleep, rather than sys_nanosleep. This patch add arch prefix for sys_nanosleep to fix it. Signed-off-by: Qiao Ma --- tools/testing/selftests/bpf/progs/test_attach_probe.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/test_attach_probe.c b/tools/testing/selftests/bpf/progs/test_attach_probe.c index 8056a4c6d918..67ec67d89091 100644 --- a/tools/testing/selftests/bpf/progs/test_attach_probe.c +++ b/tools/testing/selftests/bpf/progs/test_attach_probe.c @@ -5,20 +5,21 @@ #include #include #include +#include "bpf_misc.h" int kprobe_res = 0; int kretprobe_res = 0; int uprobe_res = 0; int uretprobe_res = 0; -SEC("kprobe/sys_nanosleep") +SEC("kprobe/" SYS_PREFIX "sys_nanosleep") int handle_kprobe(struct pt_regs *ctx) { kprobe_res = 1; return 0; } -SEC("kretprobe/sys_nanosleep") +SEC("kretprobe/" SYS_PREFIX "sys_nanosleep") int BPF_KRETPROBE(handle_kretprobe) { kretprobe_res = 2; -- Gitee