mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-08-09 06:14:34 +02:00
Cover all three sleepable tracepoint types (tp_btf.s, raw_tp.s, tp.s) and sys_exit (via bpf_task_pt_regs) with functional tests using bpf_copy_from_user() on getcwd. Verify alias and bare SEC variants, bpf_prog_test_run_raw_tp() with BPF_F_TEST_RUN_ON_CPU rejection, attach-time rejection on non-faultable tracepoints, and load-time rejection for sleepable tp_btf on non-faultable tracepoints. Signed-off-by: Mykyta Yatsenko <yatsenko@meta.com> Acked-by: Kumar Kartikeya Dwivedi <memxor@gmail.com> Link: https://lore.kernel.org/bpf/20260422-sleepable_tracepoints-v13-6-99005dff21ef@meta.com Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
105 lines
2.1 KiB
C
105 lines
2.1 KiB
C
{
|
|
"sleepable fentry accept",
|
|
.insns = {
|
|
BPF_MOV64_IMM(BPF_REG_0, 0),
|
|
BPF_EXIT_INSN(),
|
|
},
|
|
.prog_type = BPF_PROG_TYPE_TRACING,
|
|
.expected_attach_type = BPF_TRACE_FENTRY,
|
|
.kfunc = "bpf_fentry_test1",
|
|
.result = ACCEPT,
|
|
.flags = BPF_F_SLEEPABLE,
|
|
.runs = -1,
|
|
},
|
|
{
|
|
"sleepable fexit accept",
|
|
.insns = {
|
|
BPF_MOV64_IMM(BPF_REG_0, 0),
|
|
BPF_EXIT_INSN(),
|
|
},
|
|
.prog_type = BPF_PROG_TYPE_TRACING,
|
|
.expected_attach_type = BPF_TRACE_FENTRY,
|
|
.kfunc = "bpf_fentry_test1",
|
|
.result = ACCEPT,
|
|
.flags = BPF_F_SLEEPABLE,
|
|
.runs = -1,
|
|
},
|
|
{
|
|
"sleepable fmod_ret accept",
|
|
.insns = {
|
|
BPF_MOV64_IMM(BPF_REG_0, 0),
|
|
BPF_EXIT_INSN(),
|
|
},
|
|
.prog_type = BPF_PROG_TYPE_TRACING,
|
|
.expected_attach_type = BPF_MODIFY_RETURN,
|
|
.kfunc = "bpf_fentry_test1",
|
|
.result = ACCEPT,
|
|
.flags = BPF_F_SLEEPABLE,
|
|
.runs = -1,
|
|
},
|
|
{
|
|
"sleepable iter accept",
|
|
.insns = {
|
|
BPF_MOV64_IMM(BPF_REG_0, 0),
|
|
BPF_EXIT_INSN(),
|
|
},
|
|
.prog_type = BPF_PROG_TYPE_TRACING,
|
|
.expected_attach_type = BPF_TRACE_ITER,
|
|
.kfunc = "task",
|
|
.result = ACCEPT,
|
|
.flags = BPF_F_SLEEPABLE,
|
|
.runs = -1,
|
|
},
|
|
{
|
|
"sleepable lsm accept",
|
|
.insns = {
|
|
BPF_MOV64_IMM(BPF_REG_0, 0),
|
|
BPF_EXIT_INSN(),
|
|
},
|
|
.prog_type = BPF_PROG_TYPE_LSM,
|
|
.kfunc = "bpf",
|
|
.expected_attach_type = BPF_LSM_MAC,
|
|
.result = ACCEPT,
|
|
.flags = BPF_F_SLEEPABLE,
|
|
.runs = -1,
|
|
},
|
|
{
|
|
"sleepable uprobe accept",
|
|
.insns = {
|
|
BPF_MOV64_IMM(BPF_REG_0, 0),
|
|
BPF_EXIT_INSN(),
|
|
},
|
|
.prog_type = BPF_PROG_TYPE_KPROBE,
|
|
.kfunc = "bpf_fentry_test1",
|
|
.result = ACCEPT,
|
|
.flags = BPF_F_SLEEPABLE,
|
|
.runs = -1,
|
|
},
|
|
{
|
|
"sleepable raw tracepoint accept",
|
|
.insns = {
|
|
BPF_MOV64_IMM(BPF_REG_0, 0),
|
|
BPF_EXIT_INSN(),
|
|
},
|
|
.prog_type = BPF_PROG_TYPE_TRACING,
|
|
.expected_attach_type = BPF_TRACE_RAW_TP,
|
|
.kfunc = "sys_enter",
|
|
.result = ACCEPT,
|
|
.flags = BPF_F_SLEEPABLE,
|
|
.runs = -1,
|
|
},
|
|
{
|
|
"sleepable raw tracepoint reject non-faultable",
|
|
.insns = {
|
|
BPF_MOV64_IMM(BPF_REG_0, 0),
|
|
BPF_EXIT_INSN(),
|
|
},
|
|
.prog_type = BPF_PROG_TYPE_TRACING,
|
|
.expected_attach_type = BPF_TRACE_RAW_TP,
|
|
.kfunc = "sched_switch",
|
|
.result = REJECT,
|
|
.errstr = "Sleepable program cannot attach to non-faultable tracepoint",
|
|
.flags = BPF_F_SLEEPABLE,
|
|
.runs = -1,
|
|
},
|