[PATCH v9 01/10] btf: Add a new kfunc flag which allows to mark a function to be sleepable

Daniel Borkmann daniel at iogearbox.net
Wed Aug 10 14:38:54 UTC 2022


On 8/10/22 4:25 PM, Benjamin Tissoires wrote:
> On Wed, Aug 10, 2022 at 3:44 PM Roberto Sassu <roberto.sassu at huawei.com> wrote:
>>> From: Jarkko Sakkinen [mailto:jarkko at kernel.org]
>>> 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 at redhat.com>
>>>>
>>>> From: Benjamin Tissoires <benjamin.tissoires at redhat.com>
>>>>
>>>> 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

>>>> Signed-off-by: Benjamin Tissoires <benjamin.tissoires at redhat.com>
>>>> Co-developed-by: Yosry Ahmed <yosryahmed at google.com>
>>>> Signed-off-by: Yosry Ahmed <yosryahmed at google.com>
>>>> Signed-off-by: Hao Luo <haoluo at google.com>
>>>> ---
>>>>   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.



More information about the Linux-security-module-archive mailing list