| { | |
| "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, | |
| }, |