Message ID | 20230326095341.816023-1-hengqi.chen@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 7283137a7622292076dd8b7f3b8b2bb203ce5a14 |
Delegated to: | BPF |
Headers | show |
Series | [bpf-next] selftests/bpf: Don't assume page size is 4096 | expand |
On 03/26, Hengqi Chen wrote: > The verifier test creates BPF ringbuf maps using hard-coded > 4096 as max_entries. Some tests will fail if the page size > of the running kernel is not 4096. Use getpagesize() instead. > Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com> Can you share which platform that is? The fix seems ok, but I'm assuming that we have many more places where 4k is hardcoded :-) > --- > tools/testing/selftests/bpf/test_verifier.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > diff --git a/tools/testing/selftests/bpf/test_verifier.c > b/tools/testing/selftests/bpf/test_verifier.c > index 5b90eef09ade..e4657c5bc3f1 100644 > --- a/tools/testing/selftests/bpf/test_verifier.c > +++ b/tools/testing/selftests/bpf/test_verifier.c > @@ -1079,7 +1079,7 @@ static void do_test_fixup(struct bpf_test *test, > enum bpf_prog_type prog_type, > } > if (*fixup_map_ringbuf) { > map_fds[20] = create_map(BPF_MAP_TYPE_RINGBUF, 0, > - 0, 4096); > + 0, getpagesize()); > do { > prog[*fixup_map_ringbuf].imm = map_fds[20]; > fixup_map_ringbuf++; > -- > 2.31.1
On Mon, Mar 27, 2023 at 9:37 AM Stanislav Fomichev <sdf@google.com> wrote: > > On 03/26, Hengqi Chen wrote: > > The verifier test creates BPF ringbuf maps using hard-coded > > 4096 as max_entries. Some tests will fail if the page size > > of the running kernel is not 4096. Use getpagesize() instead. > > > Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com> > > Can you share which platform that is? The fix seems ok, but > I'm assuming that we have many more places where 4k is hardcoded :-) We did have a bunch of fixes over time removing hard-coded page size usage, so there should be fewer such places than you might think :) But quick grepping for "4096" shows a bunch of matches. Not all of them are page size, but it would indeed be good to audit. For now, I applied this patch, as it is correct and helps. Thanks! > > > > --- > > tools/testing/selftests/bpf/test_verifier.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > diff --git a/tools/testing/selftests/bpf/test_verifier.c > > b/tools/testing/selftests/bpf/test_verifier.c > > index 5b90eef09ade..e4657c5bc3f1 100644 > > --- a/tools/testing/selftests/bpf/test_verifier.c > > +++ b/tools/testing/selftests/bpf/test_verifier.c > > @@ -1079,7 +1079,7 @@ static void do_test_fixup(struct bpf_test *test, > > enum bpf_prog_type prog_type, > > } > > if (*fixup_map_ringbuf) { > > map_fds[20] = create_map(BPF_MAP_TYPE_RINGBUF, 0, > > - 0, 4096); > > + 0, getpagesize()); > > do { > > prog[*fixup_map_ringbuf].imm = map_fds[20]; > > fixup_map_ringbuf++; > > -- > > 2.31.1
Hello: This patch was applied to bpf/bpf-next.git (master) by Andrii Nakryiko <andrii@kernel.org>: On Sun, 26 Mar 2023 09:53:41 +0000 you wrote: > The verifier test creates BPF ringbuf maps using hard-coded > 4096 as max_entries. Some tests will fail if the page size > of the running kernel is not 4096. Use getpagesize() instead. > > Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com> > --- > tools/testing/selftests/bpf/test_verifier.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > [...] Here is the summary with links: - [bpf-next] selftests/bpf: Don't assume page size is 4096 https://git.kernel.org/bpf/bpf-next/c/7283137a7622 You are awesome, thank you!
diff --git a/tools/testing/selftests/bpf/test_verifier.c b/tools/testing/selftests/bpf/test_verifier.c index 5b90eef09ade..e4657c5bc3f1 100644 --- a/tools/testing/selftests/bpf/test_verifier.c +++ b/tools/testing/selftests/bpf/test_verifier.c @@ -1079,7 +1079,7 @@ static void do_test_fixup(struct bpf_test *test, enum bpf_prog_type prog_type, } if (*fixup_map_ringbuf) { map_fds[20] = create_map(BPF_MAP_TYPE_RINGBUF, 0, - 0, 4096); + 0, getpagesize()); do { prog[*fixup_map_ringbuf].imm = map_fds[20]; fixup_map_ringbuf++;
The verifier test creates BPF ringbuf maps using hard-coded 4096 as max_entries. Some tests will fail if the page size of the running kernel is not 4096. Use getpagesize() instead. Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com> --- tools/testing/selftests/bpf/test_verifier.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.31.1