[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1E4A2FA7-E759-450A-8979-F7CCD7F653C4@gmail.com>
Date: Wed, 05 Jun 2019 08:42:48 -0700
From: "Jonathan Lemon" <jonathan.lemon@...il.com>
To: "Björn Töpel" <bjorn.topel@...il.com>
Cc: "Martin Lau" <kafai@...com>,
"Jesper Dangaard Brouer" <brouer@...hat.com>,
netdev@...r.kernel.org, "Kernel Team" <Kernel-team@...com>,
bjorn.topel@...el.com, magnus.karlsson@...el.com, ast@...nel.org,
daniel@...earbox.net
Subject: Re: [PATCH v4 bpf-next 1/2] bpf: Allow bpf_map_lookup_elem() on an
xskmap
On 5 Jun 2019, at 1:45, Björn Töpel wrote:
> On Tue, 4 Jun 2019 at 20:13, Martin Lau <kafai@...com> wrote:
>>
>> On Tue, Jun 04, 2019 at 10:25:23AM -0700, Jonathan Lemon wrote:
>>> On 4 Jun 2019, at 9:43, Jesper Dangaard Brouer wrote:
>>>
>>>> On Mon, 3 Jun 2019 09:38:51 -0700
>>>> Jonathan Lemon <jonathan.lemon@...il.com> wrote:
>>>>
>>>>> Currently, the AF_XDP code uses a separate map in order to
>>>>> determine if an xsk is bound to a queue. Instead of doing this,
>>>>> have bpf_map_lookup_elem() return the queue_id, as a way of
>>>>> indicating that there is a valid entry at the map index.
>>>>
>>>> Just a reminder, that once we choose a return value, there the
>>>> queue_id, then it basically becomes UAPI, and we cannot change it.
>>>
>>> Yes - Alexei initially wanted to return the sk_cookie instead, but
>>> that's 64 bits and opens up a whole other can of worms.
>>>
>>>
>>>> Can we somehow use BTF to allow us to extend this later?
>>>>
>>>> I was also going to point out that, you cannot return a direct pointer
>>>> to queue_id, as BPF-prog side can modify this... but Daniel already
>>>> pointed this out.
>>>
>>> So, I see three solutions here (for this and Toke's patchset also,
>>> which is encountering the same problem).
>>>
>>> 1) add a scratch register (Toke's approach)
>>> 2) add a PTR_TO_<type>, which has the access checked. This is the most
>>> flexible approach, but does seem a bit overkill at the moment.
>> I think it would be nice and more extensible to have PTR_TO_xxx.
>> It could start with the existing PTR_TO_SOCKET
>>
>> or starting with a new PTR_TO_XDP_SOCK from the beginning is also fine.
>>
>
> Doesn't the PTR_TO_SOCKET path involve taking a ref and mandating
> sk_release() from the fast path? :-(
AF_XDP sockets are created with SOCK_RCU_FREE, and used under rcu, so
I don't think that they need to be refcounted. bpf_sk_release is a NOP
in the RCU_FREE case.
--
Jonathan
Powered by blists - more mailing lists