From: Maxim Mikityanskiy <maxtram95@gmail.com>
To: Shung-Hsi Yu <shung-hsi.yu@suse.com>
Cc: Eduard Zingerman <eddyz87@gmail.com>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>,
John Fastabend <john.fastabend@gmail.com>,
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>, Mykola Lysenko <mykolal@fb.com>,
Shuah Khan <shuah@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Jesper Dangaard Brouer <hawk@kernel.org>,
bpf@vger.kernel.org, linux-kselftest@vger.kernel.org,
netdev@vger.kernel.org, Maxim Mikityanskiy <maxim@isovalent.com>
Subject: Re: [PATCH bpf-next 01/15] selftests/bpf: Fix the u64_offset_to_skb_data test
Date: Tue, 26 Dec 2023 12:38:06 +0200 [thread overview]
Message-ID: <ZYqtDuhpbS1ltM2Q@mail.gmail.com> (raw)
In-Reply-To: <w7xg34uqlrnbb3o3rspng6y563astp3hkfxjtz3xp32rqr4a42@xgpeu7qevatg>
On Tue, 26 Dec 2023 at 17:52:56 +0800, Shung-Hsi Yu wrote:
> On Wed, Dec 20, 2023 at 11:39:59PM +0200, Maxim Mikityanskiy wrote:
> > From: Maxim Mikityanskiy <maxim@isovalent.com>
> >
> > The u64_offset_to_skb_data test is supposed to make a 64-bit fill, but
> > instead makes a 16-bit one. Fix the test according to its intention. The
> > 16-bit fill is covered by u16_offset_to_skb_data.
>
> Cover letter mentioned
>
> Patch 1 (Maxim): Fix for an existing test, it will matter later in the
> series.
>
> However no subsequent patch touch upon u64_offset_to_skb_data(). Was the
> followup missing from this series?
Thanks for your vigilance, but it's actually correct, sorry for not
making it clear enough. In patch 11 ("bpf: Preserve boundaries and track
scalars on narrowing fill") I modify u16_offset_to_skb_data, because it
becomes a valid pattern after that change. If I didn't change and fix
u64_offset_to_skb_data here, I'd need to modify it in patch 11 as well
(that's what I meant when I said "it will matter later in the series",
it's indeed subtle and implicit, now that I look at it), because it
would also start passing, however, that's not what we want, because:
1. Both tests would essentially test the same thing: a 16-bit fill after
a 32-bit spill.
2. The description of u64_offset_to_skb_data clearly says: "Refill as
u64". It's a typo in the code, u16->u64 makes sense, because we spill
two u32s and fill them as a single u64.
So, this patch essentially prevents wrong changes in a further patch.
> > Signed-off-by: Maxim Mikityanskiy <maxim@isovalent.com>
> > [...]
> > SEC("tc")
> > __description("Spill u32 const scalars. Refill as u64. Offset to skb->data")
> > -__failure __msg("invalid access to packet")
> > +__failure __msg("math between pkt pointer and register with unbounded min value is not allowed")
> > __naked void u64_offset_to_skb_data(void)
> > {
> > asm volatile (" \
> > @@ -253,7 +253,7 @@ __naked void u64_offset_to_skb_data(void)
> > w7 = 20; \
> > *(u32*)(r10 - 4) = r6; \
> > *(u32*)(r10 - 8) = r7; \
> > - r4 = *(u16*)(r10 - 8); \
> > + r4 = *(u64*)(r10 - 8); \
> > r0 = r2; \
> > /* r0 += r4 R0=pkt R2=pkt R3=pkt_end R4=umax=65535 */\
> > r0 += r4; \
next prev parent reply other threads:[~2023-12-26 10:38 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-20 21:39 [PATCH bpf-next 00/15] Improvements for tracking scalars in the BPF verifier Maxim Mikityanskiy
2023-12-20 21:39 ` [PATCH bpf-next 01/15] selftests/bpf: Fix the u64_offset_to_skb_data test Maxim Mikityanskiy
2023-12-26 9:52 ` Shung-Hsi Yu
2023-12-26 10:38 ` Maxim Mikityanskiy [this message]
2023-12-26 13:22 ` Shung-Hsi Yu
2024-01-04 2:22 ` Eduard Zingerman
2023-12-20 21:40 ` [PATCH bpf-next 02/15] bpf: make infinite loop detection in is_state_visited() exact Maxim Mikityanskiy
2023-12-20 21:40 ` [PATCH bpf-next 03/15] selftests/bpf: check if imprecise stack spills confuse infinite loop detection Maxim Mikityanskiy
2023-12-20 21:40 ` [PATCH bpf-next 04/15] bpf: Make bpf_for_each_spilled_reg consider narrow spills Maxim Mikityanskiy
2024-01-04 2:25 ` Eduard Zingerman
2023-12-20 21:40 ` [PATCH bpf-next 05/15] selftests/bpf: Add a test case for 32-bit spill tracking Maxim Mikityanskiy
2024-01-04 2:25 ` Eduard Zingerman
2023-12-20 21:40 ` [PATCH bpf-next 06/15] bpf: Add the assign_scalar_id_before_mov function Maxim Mikityanskiy
2024-01-04 2:26 ` Eduard Zingerman
2023-12-20 21:40 ` [PATCH bpf-next 07/15] bpf: Add the get_reg_width function Maxim Mikityanskiy
2023-12-20 21:40 ` [PATCH bpf-next 08/15] bpf: Assign ID to scalars on spill Maxim Mikityanskiy
2023-12-25 3:15 ` Alexei Starovoitov
2023-12-25 21:11 ` Maxim Mikityanskiy
2023-12-25 21:26 ` Alexei Starovoitov
2024-01-04 2:26 ` Eduard Zingerman
2023-12-20 21:40 ` [PATCH bpf-next 09/15] selftests/bpf: Test assigning " Maxim Mikityanskiy
2024-01-04 2:26 ` Eduard Zingerman
2023-12-20 21:40 ` [PATCH bpf-next 10/15] bpf: Track spilled unbounded scalars Maxim Mikityanskiy
2024-01-04 2:26 ` Eduard Zingerman
2023-12-20 21:40 ` [PATCH bpf-next 11/15] selftests/bpf: Test tracking " Maxim Mikityanskiy
2024-01-04 2:26 ` Eduard Zingerman
2023-12-20 21:40 ` [PATCH bpf-next 12/15] bpf: Preserve boundaries and track scalars on narrowing fill Maxim Mikityanskiy
2023-12-26 5:29 ` Shung-Hsi Yu
2024-01-04 2:27 ` Eduard Zingerman
2024-01-05 17:48 ` Maxim Mikityanskiy
2023-12-20 21:40 ` [PATCH bpf-next 13/15] selftests/bpf: Add test cases for " Maxim Mikityanskiy
2024-01-04 2:26 ` Eduard Zingerman
2023-12-20 21:40 ` [PATCH bpf-next 14/15] bpf: Optimize state pruning for spilled scalars Maxim Mikityanskiy
2023-12-20 21:40 ` [PATCH bpf-next 15/15] selftests/bpf: states pruning checks for scalar vs STACK_{MISC,ZERO} Maxim Mikityanskiy
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=ZYqtDuhpbS1ltM2Q@mail.gmail.com \
--to=maxtram95@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=eddyz87@gmail.com \
--cc=haoluo@google.com \
--cc=hawk@kernel.org \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=maxim@isovalent.com \
--cc=mykolal@fb.com \
--cc=netdev@vger.kernel.org \
--cc=sdf@google.com \
--cc=shuah@kernel.org \
--cc=shung-hsi.yu@suse.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.