From: Shung-Hsi Yu <shung-hsi.yu@suse.com>
To: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: bpf@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
John Fastabend <john.fastabend@gmail.com>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <martin.lau@linux.dev>,
Song Liu <song@kernel.org>,
Yonghong Song <yonghong.song@linux.dev>,
KP Singh <kpsingh@kernel.org>,
Stanislav Fomichev <sdf@google.com>, Hao Luo <haoluo@google.com>,
Jiri Olsa <jolsa@kernel.org>
Subject: Re: [RFC PATCH bpf-next] bpf, tnums: add bitwise-not helper
Date: Tue, 7 Nov 2023 12:43:05 +0800 [thread overview]
Message-ID: <ZUnAWUhks4UQwz_D@u94a> (raw)
In-Reply-To: <CAEf4BzZABSe-kbFzrO=9umVriJO=PSwCtw3nxt0PdS3Ltq4gmw@mail.gmail.com>
On Mon, Nov 06, 2023 at 11:56:22AM -0800, Andrii Nakryiko wrote:
> On Sun, Nov 5, 2023 at 6:11 PM Shung-Hsi Yu <shung-hsi.yu@suse.com> wrote:
> > Note: Andrii' patch mentioned in the Link tag isn't merge yet, I'll
> > resend this along with the proposed refactoring once it is merged.
> > For now, sending the patch as RFC for feedback and review.
> >
> > While the BPF instruction set does not contain a bitwise-NOT
> > instruction, the verifier may still need to compute the bitwise-NOT
> > result for the value tracked in the register. One such case reference in
> > the link below is
> >
> > u64 val;
> > val = reg_const_value(reg2, is_jmp32);
> > tnum_ops(..., tnum_const(~val);
> >
> > Where the value is extract of out tnum, operated with bitwise-NOT, then
> > simply turned back into tnum again; plus it has the limitation of only
> > working on constant. This commit adds the tnum_not() helper that compute
> > the bitwise-NOT result for all the values tracked within the tnum, that
> > allow us to simplify the above code to
> >
> > tnum_ops(..., tnum_not(reg2->var_off));
> >
> > without being limited to constant, and is general enough to be reused
> > and composed with other tnum operations.
> >
> > Link: https://lore.kernel.org/bpf/ZUSwQtfjCsKpbWcL@u94a/
> > Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
> > ---
[...]
> > diff --git a/kernel/bpf/tnum.c b/kernel/bpf/tnum.c
> > index 3d7127f439a1..b4f4a4beb0c9 100644
> > --- a/kernel/bpf/tnum.c
> > +++ b/kernel/bpf/tnum.c
> > @@ -111,6 +111,11 @@ struct tnum tnum_xor(struct tnum a, struct tnum b)
> > return TNUM(v & ~mu, mu);
> > }
> >
> > +struct tnum tnum_not(struct tnum a)
> > +{
> > + return TNUM(~a.value & ~a.mask, a.mask);
> > +}
> > +
>
> In isolation this does look like it's implementing the tnum version of
> ~x, so I have no objections to this. But I'm not sure it actually
> simplifies anything in my patches. But let's see, once it lands,
> please send a follow up applying this tnum_not().
Okay, will send once it lands.
[...]
prev parent reply other threads:[~2023-11-07 4:43 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-06 2:11 [RFC PATCH bpf-next] bpf, tnums: add bitwise-not helper Shung-Hsi Yu
2023-11-06 19:56 ` Andrii Nakryiko
2023-11-07 4:43 ` Shung-Hsi Yu [this message]
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=ZUnAWUhks4UQwz_D@u94a \
--to=shung-hsi.yu@suse.com \
--cc=andrii.nakryiko@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=martin.lau@linux.dev \
--cc=sdf@google.com \
--cc=song@kernel.org \
--cc=yonghong.song@linux.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.