Commit 4a5dcb33 authored by Yonghong Song's avatar Yonghong Song Committed by Martin KaFai Lau
Browse files

selftests/bpf: Fix test dynptr/test_dynptr_memset_xdp_chunks failure



For arm64 64K page size, the xdp data size was set to be more than 64K
in one of previous patches. This will cause failure for bpf_dynptr_memset().
Since the failure of bpf_dynptr_memset() is expected with 64K page size,
return success.

Signed-off-by: default avatarYonghong Song <yonghong.song@linux.dev>
Signed-off-by: default avatarMartin KaFai Lau <martin.lau@kernel.org>
Link: https://patch.msgid.link/20250725043440.209266-1-yonghong.song@linux.dev
parent 90f791a9
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@
#include "bpf_misc.h"
#include "errno.h"

#define PAGE_SIZE_64K 65536

char _license[] SEC("license") = "GPL";

int pid, err, val;
@@ -821,8 +823,17 @@ int test_dynptr_memset_xdp_chunks(struct xdp_md *xdp)
	data_sz = bpf_dynptr_size(&ptr_xdp);

	err = bpf_dynptr_memset(&ptr_xdp, 0, data_sz, DYNPTR_MEMSET_VAL);
	if (err)
	if (err) {
		/* bpf_dynptr_memset() eventually called bpf_xdp_pointer()
		 * where if data_sz is greater than 0xffff, -EFAULT will be
		 * returned. For 64K page size, data_sz is greater than
		 * 64K, so error is expected and let us zero out error and
		 * return success.
		 */
		if (data_sz >= PAGE_SIZE_64K)
			err = 0;
		goto out;
	}

	bpf_for(i, 0, max_chunks) {
		offset = i * sizeof(buf);