From 61eef5677eb636f510c4442e4402759d3c2106aa Mon Sep 17 00:00:00 2001 From: Luis Gerhorst <privat@luisgerhorst.de> Date: Tue, 20 Jul 2021 16:55:38 +0200 Subject: [PATCH] bpftask: Mark task/iterdents64 programs as sleepable --- kernel/bpf/verifier.c | 5 +++-- tools/lib/bpf/libbpf.c | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 7bfa2fdb64fbc..59746a9c71fb1 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 902a2d6694b41..bd2f5d0b1bf42 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 -- GitLab