From: Daniel Borkmann <daniel@iogearbox.net>
To: Edward Cree <ecree@solarflare.com>, Y Song <ys114321@gmail.com>
Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>,
David Miller <davem@davemloft.net>,
netdev <netdev@vger.kernel.org>
Subject: Re: [PATCH net-next] bpf/verifier: improve disassembly of BPF_END instructions
Date: Thu, 21 Sep 2017 21:29:33 +0200 [thread overview]
Message-ID: <59C4131D.8050003@iogearbox.net> (raw)
In-Reply-To: <207ecd4c-b1b4-3dcd-62a6-30824c19dbf7@solarflare.com>
On 09/21/2017 06:58 PM, Edward Cree wrote:
> On 21/09/17 17:40, Y Song wrote:
>> On Thu, Sep 21, 2017 at 9:24 AM, Edward Cree <ecree@solarflare.com> wrote:
>>> On 21/09/17 16:52, Alexei Starovoitov wrote:
>>>> imo
>>>> (u16) r4 endian be
>>>> isn't intuitive.
>>>> Can we come up with some better syntax?
>>>> Like
>>>> bswap16be r4
>>>> bswap32le r4
>>> Hmm, I don't like these, since bswapbe is a swap on *le* and a nop on be.
Agree, a bit too much 'swap' semantics in the name that could be
confusing perhaps, at least the be/le could be missed easily.
>>>> or
>>>>
>>>> to_be16 r4
>>>> to_le32 r4
>>> And the problem here is that it's not just to_be, it's also from_be.
More intuitive, but agree on the from_be/le. Maybe we should
just drop the "to_" prefix altogether, and leave the rest as is since
it's not surrounded by braces, it's also not a cast but rather an op.
>> Could you explain what is "from_be" here? Do not quite understand.
> Taking the example of a little-endian processor:
> cpu_to_be16() is a byte-swap, converting a u16 (cpu-endian) to a __be16.
> be16_to_cpu(), to convert a __be16 to a u16, is *also* a byte-swap.
> Meanwhile, cpu_to_le16() and le16_to_cpu() are both no-ops.
>
> More generally, the conversions between cpu-endian and fixed-endian for
> any given size are self-inverses. eBPF takes advantage of this by only
> having a single opcode for both the "to" and "from" direction. So to
> specify an endianness conversion, you need only the size and the fixed
> endianness (le or be), not the to/from direction. Conversely, when
> disassembling one of these instructions, you don't know whether it's a
> cpu_to_be16() or a be16_to_cpu(), because they both look the same at an
> instruction level (they only differ in what types the programmer thought
> of the register as holding before and after).
Yeah, exactly to the point. :)
next prev parent reply other threads:[~2017-09-21 19:29 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-21 15:09 [PATCH net-next] bpf/verifier: improve disassembly of BPF_END instructions Edward Cree
2017-09-21 15:52 ` Alexei Starovoitov
2017-09-21 16:24 ` Edward Cree
2017-09-21 16:40 ` Alexei Starovoitov
2017-09-21 16:40 ` Y Song
2017-09-21 16:58 ` Edward Cree
2017-09-21 19:29 ` Daniel Borkmann [this message]
2017-09-21 19:44 ` Alexei Starovoitov
2017-09-21 19:58 ` Edward Cree
2017-09-21 23:11 ` Y Song
2017-09-22 13:46 ` Edward Cree
2017-09-22 14:11 ` Y Song
2017-09-22 14:27 ` Y Song
2017-09-22 15:16 ` Alexei Starovoitov
2017-09-22 16:23 ` Edward Cree
2017-09-23 4:49 ` Y Song
2017-09-24 5:50 ` Alexei Starovoitov
2017-09-25 21:44 ` Daniel Borkmann
2017-09-26 1:33 ` Alexei Starovoitov
2017-09-26 14:37 ` Edward Cree
2017-09-21 16:30 ` Y Song
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=59C4131D.8050003@iogearbox.net \
--to=daniel@iogearbox.net \
--cc=alexei.starovoitov@gmail.com \
--cc=davem@davemloft.net \
--cc=ecree@solarflare.com \
--cc=netdev@vger.kernel.org \
--cc=ys114321@gmail.com \
/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.