> 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

Reply via email to