diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 7bfa2fdb64fbc790719f53902560192fc4c90b5e..59746a9c71fb1fa4b2d86d5087fd0c9eaed91a26 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -11870,8 +11870,9 @@ static int check_attach_btf_id(struct bpf_verifier_env *env) u64 key; if (prog->aux->sleepable && prog->type != BPF_PROG_TYPE_TRACING && - prog->type != BPF_PROG_TYPE_LSM) { - verbose(env, "Only fentry/fexit/fmod_ret and lsm programs can be sleepable\n"); + prog->type != BPF_PROG_TYPE_LSM && prog->type != BPF_PROG_TYPE_TASK && + prog->type != BPF_PROG_TYPE_ITERDENTS64) { + verbose(env, "Only fentry/fexit/fmod_ret, lsm, and task/iterdents64 programs can be sleepable\n"); return -EINVAL; } diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 902a2d6694b4141ef8e44329793a7090bf6106e0..bd2f5d0b1bf42c0876f00c604583583d80a54542 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -8615,8 +8615,10 @@ static const struct bpf_sec_def section_defs[] = { BPF_PROG_SEC("struct_ops", BPF_PROG_TYPE_STRUCT_OPS), BPF_EAPROG_SEC("sk_lookup/", BPF_PROG_TYPE_SK_LOOKUP, BPF_SK_LOOKUP), - BPF_PROG_SEC("task", BPF_PROG_TYPE_TASK), - BPF_PROG_SEC("iterdents64", BPF_PROG_TYPE_ITERDENTS64), + SEC_DEF("task", TASK, + .is_sleepable = true), + SEC_DEF("iterdents64", ITERDENTS64, + .is_sleepable = true), }; #undef BPF_PROG_SEC_IMPL