From: Andrii Nakryiko <andrii.nakryiko@gmail.com>
To: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Cc: Andrii Nakryiko <andriin@fb.com>, bpf <bpf@vger.kernel.org>,
Networking <netdev@vger.kernel.org>,
Alexei Starovoitov <ast@fb.com>,
Daniel Borkmann <daniel@iogearbox.net>,
Kernel Team <kernel-team@fb.com>,
"Paul E . McKenney" <paulmck@kernel.org>,
Jonathan Lemon <jonathan.lemon@gmail.com>
Subject: Re: [PATCH v2 bpf-next 3/7] bpf: track reference type in verifier
Date: Fri, 22 May 2020 11:53:26 -0700 [thread overview]
Message-ID: <CAEf4BzYqzJmRfCxtY6qqRZ0vfR7kDsMLvGgT1iENZ82WAh0TVg@mail.gmail.com> (raw)
In-Reply-To: <20200522011335.f4bfabh32puptotu@ast-mbp.dhcp.thefacebook.com>
On Thu, May 21, 2020 at 6:13 PM Alexei Starovoitov
<alexei.starovoitov@gmail.com> wrote:
>
> On Sun, May 17, 2020 at 12:57:23PM -0700, Andrii Nakryiko wrote:
> >
> > +static enum bpf_ref_type get_release_ref_type(enum bpf_func_id func_id)
> > +{
> > + switch (func_id) {
> > + case BPF_FUNC_sk_release:
> > + return BPF_REF_SOCKET;
> > + case BPF_FUNC_ringbuf_submit:
> > + case BPF_FUNC_ringbuf_discard:
> > + return BPF_REF_RINGBUF;
> > + default:
> > + return BPF_REF_INVALID;
> > + }
> > +}
> > +
> > static bool may_be_acquire_function(enum bpf_func_id func_id)
> > {
> > return func_id == BPF_FUNC_sk_lookup_tcp ||
> > @@ -464,6 +477,28 @@ static bool is_acquire_function(enum bpf_func_id func_id,
> > return false;
> > }
> >
> > +static enum bpf_ref_type get_acquire_ref_type(enum bpf_func_id func_id,
> > + const struct bpf_map *map)
> > +{
> > + enum bpf_map_type map_type = map ? map->map_type : BPF_MAP_TYPE_UNSPEC;
> > +
> > + switch (func_id) {
> > + case BPF_FUNC_sk_lookup_tcp:
> > + case BPF_FUNC_sk_lookup_udp:
> > + case BPF_FUNC_skc_lookup_tcp:
> > + return BPF_REF_SOCKET;
> > + case BPF_FUNC_map_lookup_elem:
> > + if (map_type == BPF_MAP_TYPE_SOCKMAP ||
> > + map_type == BPF_MAP_TYPE_SOCKHASH)
> > + return BPF_REF_SOCKET;
> > + return BPF_REF_INVALID;
> > + case BPF_FUNC_ringbuf_reserve:
> > + return BPF_REF_RINGBUF;
> > + default:
> > + return BPF_REF_INVALID;
> > + }
> > +}
>
> Two switch() stmts to convert helpers to REF is kinda hacky.
> I think get_release_ref_type() could have got the ref's type as btf_id from its
> arguments which would have made it truly generic and 'enum bpf_ref_type' would
> be unnecessary, but sk_lookup_* helpers return u64 and don't have btf_id of
> return value. I think we better fix that. Then btf_id would be that ref type.
True, sure. I'll drop this patch in next version, because everything
works without it. Then we can generalize this eventually.
next prev parent reply other threads:[~2020-05-22 18:53 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-17 19:57 [PATCH v2 bpf-next 0/7] BPF ring buffer Andrii Nakryiko
2020-05-17 19:57 ` [PATCH v2 bpf-next 1/7] bpf: implement BPF ring buffer and verifier support for it Andrii Nakryiko
2020-05-19 12:57 ` kbuild test robot
2020-05-19 23:53 ` kbuild test robot
2020-05-22 0:25 ` Paul E. McKenney
2020-05-22 18:46 ` Andrii Nakryiko
2020-05-25 16:01 ` Paul E. McKenney
2020-05-25 18:45 ` Andrii Nakryiko
2020-05-22 1:07 ` Alexei Starovoitov
2020-05-22 18:48 ` Andrii Nakryiko
2020-05-25 20:34 ` Andrii Nakryiko
2020-05-17 19:57 ` [PATCH v2 bpf-next 2/7] tools/memory-model: add BPF ringbuf MPSC litmus tests Andrii Nakryiko
2020-05-22 0:34 ` Paul E. McKenney
2020-05-22 18:51 ` Andrii Nakryiko
2020-05-25 23:33 ` Andrii Nakryiko
2020-05-26 3:05 ` Paul E. McKenney
2020-05-17 19:57 ` [PATCH v2 bpf-next 3/7] bpf: track reference type in verifier Andrii Nakryiko
2020-05-22 1:13 ` Alexei Starovoitov
2020-05-22 18:53 ` Andrii Nakryiko [this message]
2020-05-17 19:57 ` [PATCH v2 bpf-next 4/7] libbpf: add BPF ring buffer support Andrii Nakryiko
2020-05-22 1:15 ` Alexei Starovoitov
2020-05-22 18:56 ` Andrii Nakryiko
2020-05-17 19:57 ` [PATCH v2 bpf-next 5/7] selftests/bpf: add BPF ringbuf selftests Andrii Nakryiko
2020-05-22 1:20 ` Alexei Starovoitov
2020-05-22 18:58 ` Andrii Nakryiko
2020-05-17 19:57 ` [PATCH v2 bpf-next 6/7] bpf: add BPF ringbuf and perf buffer benchmarks Andrii Nakryiko
2020-05-22 1:21 ` Alexei Starovoitov
2020-05-22 19:07 ` Andrii Nakryiko
2020-05-17 19:57 ` [PATCH v2 bpf-next 7/7] docs/bpf: add BPF ring buffer design notes Andrii Nakryiko
2020-05-22 1:23 ` Alexei Starovoitov
2020-05-22 19:08 ` Andrii Nakryiko
2020-05-25 9:59 ` Alban Crequy
2020-05-25 19:12 ` Andrii Nakryiko
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=CAEf4BzYqzJmRfCxtY6qqRZ0vfR7kDsMLvGgT1iENZ82WAh0TVg@mail.gmail.com \
--to=andrii.nakryiko@gmail.com \
--cc=alexei.starovoitov@gmail.com \
--cc=andriin@fb.com \
--cc=ast@fb.com \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=jonathan.lemon@gmail.com \
--cc=kernel-team@fb.com \
--cc=netdev@vger.kernel.org \
--cc=paulmck@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).