[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAADnVQKPOjNJ4KuCtyApnr27UbJtpqgZZS3ToVhmnUiXnSfrjQ@mail.gmail.com>
Date: Fri, 17 Oct 2025 10:43:11 -0700
From: Alexei Starovoitov <alexei.starovoitov@...il.com>
To: Eduard Zingerman <eddyz87@...il.com>
Cc: Tiezhu Yang <yangtiezhu@...ngson.cn>, Andrii Nakryiko <andrii@...nel.org>, bpf <bpf@...r.kernel.org>,
LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH bpf v1] selftests/bpf: Fix set but not used errors
On Fri, Oct 17, 2025 at 10:40 AM Eduard Zingerman <eddyz87@...il.com> wrote:
>
> On Fri, 2025-10-17 at 10:20 -0700, Alexei Starovoitov wrote:
> > On Fri, Oct 17, 2025 at 2:35 AM Tiezhu Yang <yangtiezhu@...ngson.cn> wrote:
> > >
> > > There are some set but not used errors under tools/testing/selftests/bpf
> > > when compiling with the latest upstream mainline GCC, add the compiler
> > > attribute __maybe_unused for the variables that may be used to fix the
> > > errors, compile tested only.
> > >
> > > Cc: stable@...r.kernel.org
> > > Signed-off-by: Tiezhu Yang <yangtiezhu@...ngson.cn>
> > > ---
> > > tools/testing/selftests/bpf/map_tests/lpm_trie_map_basic_ops.c | 3 ++-
> > > tools/testing/selftests/bpf/prog_tests/bpf_cookie.c | 3 ++-
> > > tools/testing/selftests/bpf/prog_tests/find_vma.c | 3 ++-
> > > tools/testing/selftests/bpf/prog_tests/perf_branches.c | 3 ++-
> > > tools/testing/selftests/bpf/prog_tests/perf_link.c | 3 ++-
> > > tools/testing/selftests/bpf/test_maps.h | 1 +
> > > tools/testing/selftests/bpf/test_progs.h | 1 +
> > > 7 files changed, 12 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/tools/testing/selftests/bpf/map_tests/lpm_trie_map_basic_ops.c b/tools/testing/selftests/bpf/map_tests/lpm_trie_map_basic_ops.c
> > > index d32e4edac930..2b8edf996126 100644
> > > --- a/tools/testing/selftests/bpf/map_tests/lpm_trie_map_basic_ops.c
> > > +++ b/tools/testing/selftests/bpf/map_tests/lpm_trie_map_basic_ops.c
> > > @@ -226,7 +226,8 @@ static void test_lpm_order(void)
> > > static void test_lpm_map(int keysize)
> > > {
> > > LIBBPF_OPTS(bpf_map_create_opts, opts, .map_flags = BPF_F_NO_PREALLOC);
> > > - volatile size_t n_matches, n_matches_after_delete;
> > > + /* To avoid a -Wunused-but-set-variable warning. */
> > > + __maybe_unused volatile size_t n_matches, n_matches_after_delete;
> >
> > I think it's better to disable the warning instead of hacking the tests.
> > Arguably it's a grey zone whether n_matches++ qualifies as a "use".
> > It's certainly not a nop, since it's a volatile variable.
> >
> > pw-bot: cr
>
> Maybe something like below?
>
> --- a/tools/testing/selftests/bpf/map_tests/lpm_trie_map_basic_ops.c
> +++ b/tools/testing/selftests/bpf/map_tests/lpm_trie_map_basic_ops.c
> @@ -223,6 +223,8 @@ static void test_lpm_order(void)
> tlpm_clear(l2);
> }
>
> +static int print_stats; /* debug knob */
> +
> static void test_lpm_map(int keysize)
> {
> LIBBPF_OPTS(bpf_map_create_opts, opts, .map_flags = BPF_F_NO_PREALLOC);
> @@ -334,14 +336,14 @@ static void test_lpm_map(int keysize)
> tlpm_clear(list);
>
> /* With 255 random nodes in the map, we are pretty likely to match
> - * something on every lookup. For statistics, use this:
> - *
> - * printf(" nodes: %zu\n"
> - * " lookups: %zu\n"
> - * " matches: %zu\n"
> - * "matches(delete): %zu\n",
> - * n_nodes, n_lookups, n_matches, n_matches_after_delete);
> + * something on every lookup.
> */
> + if (print_stats)
> + printf(" nodes: %zu\n"
> + " lookups: %zu\n"
> + " matches: %zu\n"
> + "matches(delete): %zu\n",
> + n_nodes, n_lookups, n_matches, n_matches_after_delete);
For this particular one, yes. But other tests just do j++ to have
non-empty loop body that does something to make sure that
compilers don't remove the loop.
Powered by blists - more mailing lists