> From: Daniel Borkmann [mailto:daniel@xxxxxxxxxxxxx] > Sent: Wednesday, August 10, 2022 4:39 PM > On 8/10/22 4:25 PM, Benjamin Tissoires wrote: > > On Wed, Aug 10, 2022 at 3:44 PM Roberto Sassu > <roberto.sassu@xxxxxxxxxx> wrote: > >>> From: Jarkko Sakkinen [mailto:jarkko@xxxxxxxxxx] > >>> Sent: Tuesday, August 9, 2022 6:55 PM > >>> On Tue, Aug 09, 2022 at 03:45:54PM +0200, Roberto Sassu wrote: > >>>> From: Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx> > >>>> > >>>> From: Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx> > >>>> > >>>> This allows to declare a kfunc as sleepable and prevents its use in > >>>> a non sleepable program. > >>> > >>> Nit: "Declare a kfunc as sleepable and prevent its use in a > >>> non-sleepable program." > >>> > >>> It's missing the part *how* the patch accomplishes its goals. > >> > >> I will add: > >> > >> If an eBPF program is going to call a kfunc declared as sleepable, > >> eBPF will look at the eBPF program flags. If BPF_F_SLEEPABLE is > >> not set, execution of that program is denied. > > > > All those changes are looking good to me. > > > > Thanks a lot for keeping pushing on this patch :) > > This single one from the series got already applied here: > > https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf- > next.git/commit/?id=fa96b24204af42274ec13dfb2f2e6990d7510e55 Ok, now I understood the merge message better. Roberto > >>>> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx> > >>>> Co-developed-by: Yosry Ahmed <yosryahmed@xxxxxxxxxx> > >>>> Signed-off-by: Yosry Ahmed <yosryahmed@xxxxxxxxxx> > >>>> Signed-off-by: Hao Luo <haoluo@xxxxxxxxxx> > >>>> --- > >>>> Documentation/bpf/kfuncs.rst | 6 ++++++ > >>>> include/linux/btf.h | 1 + > >>>> kernel/bpf/btf.c | 9 +++++++++ > >>>> 3 files changed, 16 insertions(+) > >>>> > >>>> diff --git a/Documentation/bpf/kfuncs.rst b/Documentation/bpf/kfuncs.rst > >>>> index c0b7dae6dbf5..c8b21de1c772 100644 > >>>> --- a/Documentation/bpf/kfuncs.rst > >>>> +++ b/Documentation/bpf/kfuncs.rst > >>>> @@ -146,6 +146,12 @@ that operate (change some property, perform > some > >>> operation) on an object that > >>>> was obtained using an acquire kfunc. Such kfuncs need an unchanged > pointer > >>> to > >>>> ensure the integrity of the operation being performed on the expected > object.