From: sashiko-bot@kernel.org
To: chenyuan_fl@163.com
Cc: bpf@vger.kernel.org
Subject: Re: [PATCH bpf v4 2/2] selftests/bpf: Add regression test for queue/stack map size limit
Date: Mon, 24 Aug 2026 08:43:38 +0000 [thread overview]
Message-ID: <20260824084338.AA0A31F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260824083327.1708560-3-chenyuan_fl@163.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Massive memory leak and file descriptor leak in the test runner on unpatched kernels.
--
--- Patch [2]: [PATCH bpf v4 2/2] selftests/bpf: Add regression test for queue/stack map size limit ---
commit b01042556c787abab943d9e6059710f436274dbe
Author: Yuan Chen <chenyuan@kylinos.cn>
selftests/bpf: Add regression test for queue/stack map size limit
This commit adds a regression test to verify that queue/stack maps whose
element storage overflows the u32 head/tail index multiplication are rejected
at creation time. It also checks that max_entries == U32_MAX is rejected.
> diff --git a/tools/testing/selftests/bpf/prog_tests/queue_stack_map.c b/tools/testing/selftests/bpf/prog_tests/queue_stack_map.c
> index 41441325e1794..efe808eedd9a8 100644
> --- a/tools/testing/selftests/bpf/prog_tests/queue_stack_map.c
> +++ b/tools/testing/selftests/bpf/prog_tests/queue_stack_map.c
[ ... ]
> @@ -101,8 +103,43 @@ static void test_queue_stack_map_by_type(int type)
> bpf_object__close(obj);
> }
>
> +static void test_queue_stack_map_alloc_check(void)
> +{
> + LIBBPF_OPTS(bpf_map_create_opts, opts);
> + const __u32 big_value = 1 << 20; /* 1MB */
> + int fd;
> +
> + /*
> + * Regression test for the u32 index overflow in queue/stack maps:
> + * a map whose element storage (max_entries * value_size) exceeds
> + * U32_MAX bytes must be rejected at creation time, otherwise the
> + * u32 head/tail index multiplication wraps and push/peek/pop
> + * address the wrong element. 8192 * 1MB = 8GB > U32_MAX.
> + */
> + fd = bpf_map_create(BPF_MAP_TYPE_QUEUE, NULL, 0, big_value, 8192, &opts);
> + ASSERT_EQ(fd, -E2BIG, "queue_oversize");
> +
> + /*
> + * max_entries == U32_MAX would make the u32 capacity counter
> + * qs->size (max_entries + 1) wrap to 0, permanently breaking the
> + * map, so it must be rejected as well.
> + */
> + fd = bpf_map_create(BPF_MAP_TYPE_QUEUE, NULL, 0, 1, U32_MAX, &opts);
[Severity: Medium]
If this test runs on an unpatched kernel, the previous bpf_map_create()
call might unexpectedly succeed and return a valid file descriptor.
Because ASSERT_EQ() doesn't abort the test upon failure, won't this next
bpf_map_create() call overwrite the 'fd' variable without closing the previous
one?
This could leak the map file descriptor and the large amount of memory
(up to 8GB) allocated by the map, potentially triggering the OOM killer and
crashing the test environment.
Should we check if 'fd >= 0' and close it after the ASSERT_EQ() for each of
these expected-to-fail allocations?
> + ASSERT_EQ(fd, -E2BIG, "queue_u32max");
> +
> + fd = bpf_map_create(BPF_MAP_TYPE_STACK, NULL, 0, big_value, 8192, &opts);
> + ASSERT_EQ(fd, -E2BIG, "stack_oversize");
> +
> + /* A normal-sized map must still be created successfully. */
> + fd = bpf_map_create(BPF_MAP_TYPE_QUEUE, NULL, 0, 64, 100, &opts);
> + ASSERT_GE(fd, 0, "queue_normal");
> + if (fd >= 0)
> + close(fd);
> +}
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260824083327.1708560-1-chenyuan_fl@163.com?part=2
next prev parent reply other threads:[~2026-08-24 8:43 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-10 13:59 [PATCH bpf v3 0/2] bpf: Fix queue/stack map u32 index overflow chenyuan_fl
2026-08-10 13:59 ` [PATCH bpf v3 1/2] " chenyuan_fl
2026-08-10 13:59 ` [PATCH bpf v3 2/2] selftests/bpf: Add regression test for queue/stack map size limit chenyuan_fl
2026-08-10 14:49 ` bot+bpf-ci
2026-08-13 22:19 ` Andrii Nakryiko
2026-08-24 8:33 ` [PATCH bpf v4 0/2] bpf: Fix queue/stack map u32 index overflow chenyuan_fl
2026-08-24 8:33 ` [PATCH bpf v4 1/2] " chenyuan_fl
2026-08-24 8:47 ` sashiko-bot
2026-08-24 8:33 ` [PATCH bpf v4 2/2] selftests/bpf: Add regression test for queue/stack map size limit chenyuan_fl
2026-08-24 8:43 ` sashiko-bot [this message]
2026-08-24 9:25 ` bot+bpf-ci
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260824084338.AA0A31F00A3A@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=chenyuan_fl@163.com \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox