From: Jakub Sitnicki <jakub@cloudflare.com>
To: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Cc: netdev@vger.kernel.org, bpf@vger.kernel.org,
magnus.karlsson@intel.com, stfomichev@gmail.com,
kuba@kernel.org, pabeni@redhat.com, horms@kernel.org,
tushar.vyavahare@intel.com, kerneljasonxing@gmail.com
Subject: Re: [PATCH net-next] selftests/xsk: preserve UMEM view in bidi test
Date: Thu, 25 Jun 2026 16:47:49 +0200 [thread overview]
Message-ID: <87ik76y8ve.fsf@cloudflare.com> (raw)
In-Reply-To: <20260623091008.1046547-1-maciej.fijalkowski@intel.com> (Maciej Fijalkowski's message of "Tue, 23 Jun 2026 11:10:08 +0200")
On Tue, Jun 23, 2026 at 11:10 AM +02, Maciej Fijalkowski wrote:
> The UMEM state refactor made __send_pkts() use xsk->umem for Tx
> address generation. At the same time, the shared-UMEM Tx setup copies the
> Rx UMEM state into a Tx-local state object and resets base_addr and
> next_buffer before configuring the Tx socket.
>
> Passing that Tx-local object to xsk_configure() makes xsk->umem point to
> the zero-based Tx allocator state. This breaks the BIDIRECTIONAL test once
> the roles are switched: the same socket is then used for Rx validation, but
> received descriptors from the other logical UMEM half are checked against
> base_addr == 0. With the new UMEM bounds check, a valid address such as
> base_addr + XDP_PACKET_HEADROOM is rejected as being outside the UMEM
> window.
>
> Keep xsk->umem as the shared/Rx UMEM view used for socket configuration
> and Rx validation. Use the ifobject-local UMEM copy only for Tx descriptor
> address generation, preserving the BIDIRECTIONAL test's intent of using
> the proper logical UMEM half after the direction switch.
>
> Fixes: b17631032769 ("selftests/xsk: Move UMEM state from ifobject to xsk_socket_info")
> Signed-off-by: Maciej Fijalkowski maciej.fijalkowski@intel.com
> ---
> tools/testing/selftests/bpf/prog_tests/test_xsk.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/prog_tests/test_xsk.c b/tools/testing/selftests/bpf/prog_tests/test_xsk.c
> index d8a1c0d40e5a..50a8dbacb63d 100644
> --- a/tools/testing/selftests/bpf/prog_tests/test_xsk.c
> +++ b/tools/testing/selftests/bpf/prog_tests/test_xsk.c
> @@ -1169,8 +1169,8 @@ static int receive_pkts(struct test_spec *test)
> static int __send_pkts(struct ifobject *ifobject, struct xsk_socket_info *xsk, bool timeout)
> {
> u32 i, idx = 0, valid_pkts = 0, valid_frags = 0, buffer_len;
> + struct xsk_umem_info *umem = ifobject->xsk_arr[0].umem_real;
> struct pkt_stream *pkt_stream = xsk->pkt_stream;
> - struct xsk_umem_info *umem = xsk->umem;
> bool use_poll = ifobject->use_poll;
> struct pollfd fds = { };
> int ret;
IIUC, this works because umem_real happens to point at shared/Tx UMEM
view (base_addr=0).
> @@ -1524,7 +1524,7 @@ static int thread_common_ops_tx(struct test_spec *test, struct ifobject *ifobjec
> umem_tx->base_addr = 0;
> umem_tx->next_buffer = 0;
>
> - ret = xsk_configure(test, ifobject, umem_tx, true);
> + ret = xsk_configure(test, ifobject, umem_rx, true);
> if (ret)
> return ret;
> ifobject->xsk = &ifobject->xsk_arr[0];
And this bit works because thread_common_ops_tx is only invoked in
shared test case.
Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com>
prev parent reply other threads:[~2026-06-25 14:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-23 9:10 [PATCH net-next] selftests/xsk: preserve UMEM view in bidi test Maciej Fijalkowski
2026-06-24 3:47 ` Vyavahare, Tushar
2026-06-25 2:33 ` Jakub Kicinski
2026-06-25 10:35 ` Maciej Fijalkowski
2026-06-25 14:36 ` Jakub Kicinski
2026-06-25 15:21 ` Maciej Fijalkowski
2026-06-25 15:29 ` Jakub Kicinski
2026-06-25 13:38 ` Jason Xing
2026-06-25 14:47 ` Jakub Sitnicki [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=87ik76y8ve.fsf@cloudflare.com \
--to=jakub@cloudflare.com \
--cc=bpf@vger.kernel.org \
--cc=horms@kernel.org \
--cc=kerneljasonxing@gmail.com \
--cc=kuba@kernel.org \
--cc=maciej.fijalkowski@intel.com \
--cc=magnus.karlsson@intel.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=stfomichev@gmail.com \
--cc=tushar.vyavahare@intel.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.