From: Benjamin Tissoires <bentiss@kernel.org>
To: Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
John Fastabend <john.fastabend@gmail.com>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <martin.lau@linux.dev>,
Eduard Zingerman <eddyz87@gmail.com>, Song Liu <song@kernel.org>,
Yonghong Song <yonghong.song@linux.dev>,
KP Singh <kpsingh@kernel.org>,
Stanislav Fomichev <sdf@google.com>, Hao Luo <haoluo@google.com>,
Jiri Olsa <jolsa@kernel.org>
Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org,
Benjamin Tissoires <bentiss@kernel.org>
Subject: [PATCH] bpf: verifier: allow arrays of progs to be used in sleepable context
Date: Mon, 22 Apr 2024 09:16:28 +0200 [thread overview]
Message-ID: <20240422-sleepable_array_progs-v1-1-7c46ccbaa6e2@kernel.org> (raw)
Arrays of progs are underlying using regular arrays, but they can only
be updated from a syscall.
Therefore, they should be safe to use while in a sleepable context.
This is required to be able to call bpf_tail_call() from a sleepable
tracing bpf program.
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
---
Hi,
a small patch to allow to have:
```
SEC("fmod_ret.s/__hid_bpf_tail_call_sleepable")
int BPF_PROG(hid_tail_call_sleepable, struct hid_bpf_ctx *hctx)
{
bpf_tail_call(ctx, &hid_jmp_table, hctx->index);
return 0;
}
```
This should allow me to add bpf hooks to functions that communicate with
the hardware.
Cheers,
Benjamin
---
kernel/bpf/verifier.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 68cfd6fc6ad4..880b32795136 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -18171,6 +18171,7 @@ static int check_map_prog_compatibility(struct bpf_verifier_env *env,
case BPF_MAP_TYPE_QUEUE:
case BPF_MAP_TYPE_STACK:
case BPF_MAP_TYPE_ARENA:
+ case BPF_MAP_TYPE_PROG_ARRAY:
break;
default:
verbose(env,
---
base-commit: 735f5b8a7ccf383e50d76f7d1c25769eee474812
change-id: 20240422-sleepable_array_progs-e0c07b17cabb
Best regards,
--
Benjamin Tissoires <bentiss@kernel.org>
next reply other threads:[~2024-04-22 7:16 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-22 7:16 Benjamin Tissoires [this message]
2024-04-22 15:44 ` [PATCH] bpf: verifier: allow arrays of progs to be used in sleepable context Daniel Borkmann
2024-04-22 17:07 ` Benjamin Tissoires
2024-04-24 14:16 ` Benjamin Tissoires
2024-04-24 19:45 ` Alexei Starovoitov
2024-04-30 10:02 ` Benjamin Tissoires
2024-05-07 0:26 ` Alexei Starovoitov
2024-05-07 13:32 ` Benjamin Tissoires
2024-05-08 2:03 ` Alexei Starovoitov
2024-05-08 11:53 ` Benjamin Tissoires
2024-05-08 22:25 ` Alexei Starovoitov
2024-05-10 10:04 ` Benjamin Tissoires
2024-05-10 14:23 ` Alexei Starovoitov
2024-05-28 14:25 ` Benjamin Tissoires
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240422-sleepable_array_progs-v1-1-7c46ccbaa6e2@kernel.org \
--to=bentiss@kernel.org \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=sdf@google.com \
--cc=song@kernel.org \
--cc=yonghong.song@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.