Commit c9110e6f authored by Ricardo B. Marlière's avatar Ricardo B. Marlière Committed by Andrii Nakryiko
Browse files

selftests/bpf: Fix count write in testapp_xdp_metadata_copy()



Commit 4b302092 ("selftests/xsk: Add tail adjustment tests and support
check") added a new global to xsk_xdp_progs.c, but left out the access in
the testapp_xdp_metadata_copy() function. Since bpf_map_update_elem() will
write to the whole bss section, it gets truncated. Fix by writing to
skel_rx->bss->count directly.

Fixes: 4b302092 ("selftests/xsk: Add tail adjustment tests and support check")
Signed-off-by: default avatarRicardo B. Marlière <rbm@suse.com>
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20250829-selftests-bpf-xsk_regression_fix-v1-1-5f5acdb9fe6b@suse.com
parent 2a912258
Loading
Loading
Loading
Loading
+1 −13
Original line number Diff line number Diff line
@@ -2276,25 +2276,13 @@ static int testapp_xdp_metadata_copy(struct test_spec *test)
{
	struct xsk_xdp_progs *skel_rx = test->ifobj_rx->xdp_progs;
	struct xsk_xdp_progs *skel_tx = test->ifobj_tx->xdp_progs;
	struct bpf_map *data_map;
	int count = 0;
	int key = 0;

	test_spec_set_xdp_prog(test, skel_rx->progs.xsk_xdp_populate_metadata,
			       skel_tx->progs.xsk_xdp_populate_metadata,
			       skel_rx->maps.xsk, skel_tx->maps.xsk);
	test->ifobj_rx->use_metadata = true;

	data_map = bpf_object__find_map_by_name(skel_rx->obj, "xsk_xdp_.bss");
	if (!data_map || !bpf_map__is_internal(data_map)) {
		ksft_print_msg("Error: could not find bss section of XDP program\n");
		return TEST_FAILURE;
	}

	if (bpf_map_update_elem(bpf_map__fd(data_map), &key, &count, BPF_ANY)) {
		ksft_print_msg("Error: could not update count element\n");
		return TEST_FAILURE;
	}
	skel_rx->bss->count = 0;

	return testapp_validate_traffic(test);
}