Re: [PATCH bpf 2/3] selftests/bpf: Test querying BPF_F_PREORDER cgroup attachments
From: bot+bpf-ci
Date: Fri Sep 18 2026 - 14:25:46 EST
> diff --git a/tools/testing/selftests/bpf/prog_tests/cgroup_mprog_opts.c b/tools/testing/selftests/bpf/prog_tests/cgroup_mprog_opts.c
> index bb60704a3ef92..343357d9c460e 100644
> --- a/tools/testing/selftests/bpf/prog_tests/cgroup_mprog_opts.c
> +++ b/tools/testing/selftests/bpf/prog_tests/cgroup_mprog_opts.c
[ ... ]
> @@ -357,6 +380,34 @@ static void test_preorder_prog_attach_detach(int atype)
>
> assert_mprog_count(cg, atype, 4);
>
> + optq.prog_ids = prog_ids;
> + optq.prog_attach_flags = prog_attach_flags;
> + optq.count = 10;
> + err = bpf_prog_query_opts(cg, atype, &optq);
> + if (!ASSERT_OK(err, "prog_query"))
> + goto cleanup4;
> +
> + ASSERT_EQ(optq.count, 4, "count");
> + /* Direct query reports attached programs in cgroup list order.
> + * Lookup by prog_id to verify per-program flags independently of slot index.
> + */
> + err = find_prog_attach_flags(&optq, id1, &flags);
> + if (ASSERT_OK(err, "find id1"))
> + ASSERT_EQ(flags, BPF_F_ALLOW_MULTI, "flags id1");
> +
> + err = find_prog_attach_flags(&optq, id2, &flags);
> + if (ASSERT_OK(err, "find id2"))
> + ASSERT_EQ(flags, BPF_F_ALLOW_MULTI | BPF_F_PREORDER, "flags id2");
> +
> + err = find_prog_attach_flags(&optq, id3, &flags);
> + if (ASSERT_OK(err, "find id3"))
> + ASSERT_EQ(flags, BPF_F_ALLOW_MULTI | BPF_F_PREORDER, "flags id3");
> +
> + err = find_prog_attach_flags(&optq, id4, &flags);
> + if (ASSERT_OK(err, "find id4"))
> + ASSERT_EQ(flags, BPF_F_ALLOW_MULTI, "flags id4");
> +
> +cleanup4:
> err = bpf_prog_detach_opts(fd4, cg, atype, &optd);
[ ... ]
> @@ -460,6 +520,34 @@ static void test_preorder_link_attach_detach(int atype)
>
> assert_mprog_count(cg, atype, 4);
>
> + optq.prog_ids = prog_ids;
> + optq.prog_attach_flags = prog_attach_flags;
> + optq.count = 10;
> + err = bpf_prog_query_opts(cg, atype, &optq);
> + if (!ASSERT_OK(err, "prog_query"))
> + goto cleanup4;
> +
> + ASSERT_EQ(optq.count, 4, "count");
> + /* Direct query reports attached programs in cgroup list order.
> + * Lookup by prog_id to verify per-program flags independently of slot index.
> + */
> + err = find_prog_attach_flags(&optq, id1, &flags);
> + if (ASSERT_OK(err, "find id1"))
> + ASSERT_EQ(flags, BPF_F_ALLOW_MULTI, "flags id1");
> +
> + err = find_prog_attach_flags(&optq, id2, &flags);
> + if (ASSERT_OK(err, "find id2"))
> + ASSERT_EQ(flags, BPF_F_ALLOW_MULTI | BPF_F_PREORDER, "flags id2");
> +
> + err = find_prog_attach_flags(&optq, id3, &flags);
> + if (ASSERT_OK(err, "find id3"))
> + ASSERT_EQ(flags, BPF_F_ALLOW_MULTI | BPF_F_PREORDER, "flags id3");
> +
> + err = find_prog_attach_flags(&optq, id4, &flags);
> + if (ASSERT_OK(err, "find id4"))
> + ASSERT_EQ(flags, BPF_F_ALLOW_MULTI, "flags id4");
> +
> +cleanup4:
> bpf_link__destroy(link4);
This isn't a bug, but since the patch already introduces a helper
(find_prog_attach_flags), would it be worth folding this
query-and-check block into one too, so the two preorder subtests
share it instead of carrying identical copies?
The pattern appears twice: first in test_preorder_prog_attach_detach()
and again verbatim in test_preorder_link_attach_detach() - same query
setup, same comment, same four id/flag expectations, together with
duplicated locals (prog_ids[10], prog_attach_flags[10], flags, optq).
---
AI reviewed your patch. Please fix the bug or email reply why it's not a bug.
See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md
CI run summary: https://github.com/kernel-patches/bpf/actions/runs/35376083935