[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <7e93cc7b-0bc0-41d7-af36-d21f919d5755@linux.dev>
Date: Mon, 4 Dec 2023 15:08:25 -0800
From: Martin KaFai Lau <martin.lau@...ux.dev>
To: Vadim Fedorenko <vadim.fedorenko@...ux.dev>
Cc: netdev@...r.kernel.org, linux-crypto@...r.kernel.org,
bpf@...r.kernel.org, Jakub Kicinski <kuba@...nel.org>,
Andrii Nakryiko <andrii@...nel.org>, Alexei Starovoitov <ast@...nel.org>,
Mykola Lysenko <mykolal@...com>, Vadim Fedorenko <vadfed@...a.com>,
Herbert Xu <herbert@...dor.apana.org.au>
Subject: Re: [PATCH bpf-next v7 1/3] bpf: make common crypto API for TC/XDP
programs
On 12/3/23 11:02 AM, Vadim Fedorenko wrote:
>>> +static const struct bpf_crypto_type *bpf_crypto_get_type(const char *name)
>>> +{
>>> + const struct bpf_crypto_type *type = ERR_PTR(-ENOENT);
>>> + struct bpf_crypto_type_list *node;
>>> +
>>> + down_read(&bpf_crypto_types_sem);
>>> + list_for_each_entry(node, &bpf_crypto_types, list) {
>>> + if (strcmp(node->type->name, name))
>>> + continue;
>>> +
>>> + if (try_module_get(node->type->owner))
>>
>> If I read patch 2 correctly, it is always built-in. I am not sure I understand
>> the module_put/get in this patch.
>
> Well, yeah, right now it's built-in, but it can be easily converted to module
> with it's own Kconfig option. Especially if we think about adding aead crypto
> and using bpf in embedded setups with less amount of resources.
What code is missing to support module? It sounds like all codes are ready.
and does it really need a separate kconfig option? Can it depend on
CONFIG_BPF_SYSCALL and CONFIG_CRYPTO_SKCIPHER?
>>> +BTF_SET8_START(crypt_init_kfunc_btf_ids)
>>> +BTF_ID_FLAGS(func, bpf_crypto_ctx_create, KF_ACQUIRE | KF_RET_NULL |
>>> KF_SLEEPABLE)
>>> +BTF_ID_FLAGS(func, bpf_crypto_ctx_release, KF_RELEASE)
>>> +BTF_ID_FLAGS(func, bpf_crypto_ctx_acquire, KF_ACQUIRE | KF_TRUSTED_ARGS)
>>
>> Considering bpf_crypto_ctx is rcu protected, the acquire may use "KF_ACQUIRE |
>> KF_RCU | KF_RET_NULL" such that the bpf_crypto_ctx_acquire(ctx_from_map_value)
>> will work and the user will prepare checking NULL from day one.
>>
>
> Got it. What about create? Should it also include KF_RCU?
create should not need KF_RCU. The return value is a trusted/refcounted pointer.
It has a reg->ref_obj_id => is_trusted_reg().
Powered by blists - more mailing lists