bpf: ignore expected GCC warning in test_global_func10.c
authorJose E. Marchesi <jose.marchesi@oracle.com>
Sat, 11 May 2024 21:23:49 +0000 (23:23 +0200)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 13 May 2024 00:31:24 +0000 (17:31 -0700)
commit6a2f786e6905007e82bac212296deca29815916d
treeb1caa94011a1eecff887b0d6bce42ea79b72c92a
parent73868988c90d2701587ab2a48b5858ab935afb17
bpf: ignore expected GCC warning in test_global_func10.c

The BPF selftest global_func10 in progs/test_global_func10.c contains:

  struct Small {
   long x;
  };

  struct Big {
   long x;
   long y;
  };

  [...]

  __noinline int foo(const struct Big *big)
  {
if (!big)
return 0;

return bpf_get_prandom_u32() < big->y;
  }

  [...]

  SEC("cgroup_skb/ingress")
  __failure __msg("invalid indirect access to stack")
  int global_func10(struct __sk_buff *skb)
  {
const struct Small small = {.x = skb->len };

return foo((struct Big *)&small) ? 1 : 0;
  }

GCC emits a "maybe uninitialized" warning for the code above, because
it knows `foo' accesses `big->y'.

Since the purpose of this selftest is to check that the verifier will
fail on this sort of invalid memory access, this patch just silences
the compiler warning.

Tested in bpf-next master.
No regressions.

Signed-off-by: Jose E. Marchesi <jose.marchesi@oracle.com>
Cc: david.faust@oracle.com
Cc: cupertino.miranda@oracle.com
Cc: Yonghong Song <yonghong.song@linux.dev>
Cc: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20240511212349.23549-1-jose.marchesi@oracle.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/progs/test_global_func10.c