root/tools/testing/selftests/bpf/verifier/sleepable.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 reject",
        .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 = "Only fentry/fexit/fmod_ret, lsm, iter, uprobe, and struct_ops programs can be sleepable",
        .flags = BPF_F_SLEEPABLE,
        .runs = -1,
},