Re: [PATCH bpf-next] selftests/bpf: fix a few clang compilation errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 5/11/22 12:08 PM, David Vernet wrote:
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.

I compiled with latest llvm-project source (llvm15 main branch).
Since latest pahole (built from source) by default will do parallel
dwarf parsing and btf generation when build vmlinux, you might need this patch as well for pahole:
  https://lore.kernel.org/bpf/20220511220249.525908-1-yhs@xxxxxx/


Anyways, looks good to me.

Acked-by: David Vernet <void@xxxxxxxxxxxxx>



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux