From: Mykyta Yatsenko Add BPF_TRACE_RAW_TP to the set of tracing program attach types that can be loaded as sleepable in can_be_sleepable(). The actual enforcement that the target tracepoint supports sleepable execution (i.e., is faultable) is deferred to attach time, since the target tracepoint is not known at program load time. Signed-off-by: Mykyta Yatsenko --- kernel/bpf/verifier.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 0162f946032fe317ce1e5cf4a82e86a9357eca2b..1973184306e41d1279bafe7b2870cc9f5772c40e 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -25186,6 +25186,7 @@ static bool can_be_sleepable(struct bpf_prog *prog) case BPF_MODIFY_RETURN: case BPF_TRACE_ITER: case BPF_TRACE_FSESSION: + case BPF_TRACE_RAW_TP: return true; default: return false; @@ -25215,7 +25216,7 @@ static int check_attach_btf_id(struct bpf_verifier_env *env) } if (prog->sleepable && !can_be_sleepable(prog)) { - verbose(env, "Only fentry/fexit/fmod_ret, lsm, iter, uprobe, and struct_ops programs can be sleepable\n"); + verbose(env, "Only fentry/fexit/fmod_ret, lsm, iter, uprobe, struct_ops, and raw_tp programs can be sleepable\n"); return -EINVAL; } -- 2.53.0