]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests/xsk: properly handle batch ending in the middle of a packet
authorLarysa Zaremba <larysa.zaremba@intel.com>
Tue, 3 Feb 2026 15:50:57 +0000 (16:50 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 6 Feb 2026 17:36:36 +0000 (09:36 -0800)
Referenced commit reduced the scope of the variable pkt, so now it has to
be reinitialized via pkt_stream_get_next_rx_pkt(), which also increments
some counters. When the packet is interrupted by the batch ending, pkt
stream therefore proceeds to the next packet, while xsk ring still contains
the previous one, this results in a pkt_nb mismatch.

Decrement the affected counters when packet is interrupted.

Fixes: 8913e653e9b8 ("selftests/xsk: Iterate over all the sockets in the receive pkts function")
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
Link: https://lore.kernel.org/r/20260203155103.2305816-2-larysa.zaremba@intel.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/prog_tests/test_xsk.c

index 5af28f359cfda4128aa21466287d9bc5d21f20db..69a5a9a5189b00b01bfeaf6c597b77a9dd193472 100644 (file)
@@ -1090,6 +1090,8 @@ static int __receive_pkts(struct test_spec *test, struct xsk_socket_info *xsk)
                        xsk_ring_prod__cancel(&umem->fq, nb_frags);
                }
                frags_processed -= nb_frags;
+               pkt_stream_cancel(pkt_stream);
+               pkts_sent--;
        }
 
        if (ifobj->use_fill_ring)