Adding selftest that puts kprobe.multi on bpf_fentry_test1 that calls bpf_kfunc_common_test kfunc which has 3 perf event kprobes and 1 kprobe.multi attached. Because fprobe (kprobe.multi attach layear) does not have strict recursion check the kprobe's bpf_prog_active check is hit for test2-5. Disabling this test for arm64, because there's no fprobe support yet. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Tested-by: Song Liu <song@kernel.org> Reviewed-by: Song Liu <song@kernel.org> Acked-by: Hou Tao <houtao1@huawei.com> Link: https://lore.kernel.org/bpf/20230920213145.1941596-9-jolsa@kernel.org
48 lines
816 B
C
48 lines
816 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include "vmlinux.h"
|
|
#include <bpf/bpf_helpers.h>
|
|
#include <bpf/bpf_tracing.h>
|
|
#include "../bpf_testmod/bpf_testmod_kfunc.h"
|
|
|
|
char _license[] SEC("license") = "GPL";
|
|
|
|
/*
|
|
* No tests in here, just to trigger 'bpf_fentry_test*'
|
|
* through tracing test_run
|
|
*/
|
|
SEC("fentry/bpf_modify_return_test")
|
|
int BPF_PROG(trigger)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
SEC("kprobe.multi/bpf_fentry_test1")
|
|
int test1(struct pt_regs *ctx)
|
|
{
|
|
bpf_kfunc_common_test();
|
|
return 0;
|
|
}
|
|
|
|
SEC("kprobe/bpf_kfunc_common_test")
|
|
int test2(struct pt_regs *ctx)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
SEC("kprobe/bpf_kfunc_common_test")
|
|
int test3(struct pt_regs *ctx)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
SEC("kprobe/bpf_kfunc_common_test")
|
|
int test4(struct pt_regs *ctx)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
SEC("kprobe.multi/bpf_kfunc_common_test")
|
|
int test5(struct pt_regs *ctx)
|
|
{
|
|
return 0;
|
|
}
|