Adding selftest that puts kprobe on bpf_fentry_test1 that calls bpf_printk and invokes bpf_trace_printk tracepoint. The bpf_trace_printk tracepoint has test[234] programs attached to it. Because kprobe execution goes through bpf_prog_active check, programs attached to the tracepoint will fail the recursion check and increment the recursion_misses stats. 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> Link: https://lore.kernel.org/bpf/20230920213145.1941596-10-jolsa@kernel.org
41 lines
673 B
C
41 lines
673 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include "vmlinux.h"
|
|
#include <bpf/bpf_helpers.h>
|
|
#include <bpf/bpf_tracing.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/bpf_fentry_test1")
|
|
int test1(struct pt_regs *ctx)
|
|
{
|
|
bpf_printk("test");
|
|
return 0;
|
|
}
|
|
|
|
SEC("tp/bpf_trace/bpf_trace_printk")
|
|
int test2(struct pt_regs *ctx)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
SEC("tp/bpf_trace/bpf_trace_printk")
|
|
int test3(struct pt_regs *ctx)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
SEC("tp/bpf_trace/bpf_trace_printk")
|
|
int test4(struct pt_regs *ctx)
|
|
{
|
|
return 0;
|
|
}
|