mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
selftests/bpf: Increase xdp data size for arm64 64K page size
With arm64 64K page size, the following 4 subtests failed:
#97/25 dynptr/test_probe_read_user_dynptr:FAIL
#97/26 dynptr/test_probe_read_kernel_dynptr:FAIL
#97/27 dynptr/test_probe_read_user_str_dynptr:FAIL
#97/28 dynptr/test_probe_read_kernel_str_dynptr:FAIL
These failures are due to function bpf_dynptr_check_off_len() in
include/linux/bpf.h where there is a test
if (len > size || offset > size - len)
return -E2BIG;
With 64K page size, the 'offset' is greater than 'size - len',
which caused the test failure.
For 64KB page size, this patch increased the xdp buffer size from 5000 to
90000. The above 4 test failures are fixed as 'size' value is increased.
But it introduced two new failures:
#97/4 dynptr/test_dynptr_copy_xdp:FAIL
#97/12 dynptr/test_dynptr_memset_xdp_chunks:FAIL
These two failures will be addressed in subsequent patches.
Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Acked-by: Mykyta Yatsenko <yatsenko@meta.com>
Link: https://patch.msgid.link/20250725043430.208469-1-yonghong.song@linux.dev
This commit is contained in:
parent
95993dc303
commit
4c82768e41
|
|
@ -51,6 +51,8 @@ static struct {
|
|||
{"test_copy_from_user_task_str_dynptr", SETUP_SYSCALL_SLEEP},
|
||||
};
|
||||
|
||||
#define PAGE_SIZE_64K 65536
|
||||
|
||||
static void verify_success(const char *prog_name, enum test_setup_type setup_type)
|
||||
{
|
||||
char user_data[384] = {[0 ... 382] = 'a', '\0'};
|
||||
|
|
@ -146,14 +148,18 @@ static void verify_success(const char *prog_name, enum test_setup_type setup_typ
|
|||
}
|
||||
case SETUP_XDP_PROG:
|
||||
{
|
||||
char data[5000];
|
||||
char data[90000];
|
||||
int err, prog_fd;
|
||||
LIBBPF_OPTS(bpf_test_run_opts, opts,
|
||||
.data_in = &data,
|
||||
.data_size_in = sizeof(data),
|
||||
.repeat = 1,
|
||||
);
|
||||
|
||||
if (getpagesize() == PAGE_SIZE_64K)
|
||||
opts.data_size_in = sizeof(data);
|
||||
else
|
||||
opts.data_size_in = 5000;
|
||||
|
||||
prog_fd = bpf_program__fd(prog);
|
||||
err = bpf_prog_test_run_opts(prog_fd, &opts);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user