On Wed, May 11, 2022 at 11:47:35AM -0700, Yonghong Song wrote: > With latest clang, I got the following compilation errors: > .../prog_tests/test_tunnel.c:291:6: error: variable 'local_ip_map_fd' is used uninitialized > whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized] > if (attach_tc_prog(&tc_hook, -1, set_dst_prog_fd)) > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > .../bpf/prog_tests/test_tunnel.c:312:6: note: uninitialized use occurs here > if (local_ip_map_fd >= 0) > ^~~~~~~~~~~~~~~ > ... > .../prog_tests/kprobe_multi_test.c:346:6: error: variable 'err' is used uninitialized > whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized] > if (IS_ERR(map)) > ^~~~~~~~~~~ > .../prog_tests/kprobe_multi_test.c:388:6: note: uninitialized use occurs here > if (err) { > ^~~ > > This patch fixed the above compilation errors. I'd argue that these are real bugs that the compiler happens to have caught, and that the patch should perhaps be framed as fixing them rather than as avoiding compilation failures, but that might be unnecessarily nit-picky and I don't feel strongly about it. > > Signed-off-by: Yonghong Song <yhs@xxxxxx> > --- > tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c | 4 +++- > tools/testing/selftests/bpf/prog_tests/test_tunnel.c | 4 ++-- > 2 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c b/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c > index 816eacededd1..586dc52d6fb9 100644 > --- a/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c > +++ b/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c > @@ -343,8 +343,10 @@ static int get_syms(char ***symsp, size_t *cntp) > return -EINVAL; > > map = hashmap__new(symbol_hash, symbol_equal, NULL); > - if (IS_ERR(map)) > + if (IS_ERR(map)) { > + err = libbpf_get_error(map); > goto error; > + } > > while (fgets(buf, sizeof(buf), f)) { > /* skip modules */ > diff --git a/tools/testing/selftests/bpf/prog_tests/test_tunnel.c b/tools/testing/selftests/bpf/prog_tests/test_tunnel.c > index 071c9c91b50f..3bba4a2a0530 100644 > --- a/tools/testing/selftests/bpf/prog_tests/test_tunnel.c > +++ b/tools/testing/selftests/bpf/prog_tests/test_tunnel.c > @@ -246,7 +246,7 @@ static void test_vxlan_tunnel(void) > { > struct test_tunnel_kern *skel = NULL; > struct nstoken *nstoken; > - int local_ip_map_fd; > + int local_ip_map_fd = -1; > int set_src_prog_fd, get_src_prog_fd; > int set_dst_prog_fd; > int key = 0, ifindex = -1; > @@ -319,7 +319,7 @@ static void test_ip6vxlan_tunnel(void) > { > struct test_tunnel_kern *skel = NULL; > struct nstoken *nstoken; > - int local_ip_map_fd; > + int local_ip_map_fd = -1; > int set_src_prog_fd, get_src_prog_fd; > int set_dst_prog_fd; > int key = 0, ifindex = -1; > -- > 2.30.2 > I'm a bit surprised this ever successfully compiled. What version of clang did you have to upgrade to in order to see this error? IIRC I've used -Wsometimes-uninitialized on much older versions of clang. Anyways, looks good to me. Acked-by: David Vernet <void@xxxxxxxxxxxxx>