selftests/bpf: Fix a clang compilation error
authorYonghong Song <yhs@fb.com>
Wed, 26 Jan 2022 18:19:40 +0000 (10:19 -0800)
committerAndrii Nakryiko <andrii@kernel.org>
Wed, 26 Jan 2022 20:07:01 +0000 (12:07 -0800)
Compiling kernel and selftests/bpf with latest llvm like blow:
  make -j LLVM=1
  make -C tools/testing/selftests/bpf -j LLVM=1
I hit the following compilation error:
  /.../prog_tests/log_buf.c:215:6: error: variable 'log_buf' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized]
          if (!ASSERT_OK_PTR(raw_btf_data, "raw_btf_data_good"))
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /.../prog_tests/log_buf.c:264:7: note: uninitialized use occurs here
          free(log_buf);
               ^~~~~~~
  /.../prog_tests/log_buf.c:215:2: note: remove the 'if' if its condition is always false
          if (!ASSERT_OK_PTR(raw_btf_data, "raw_btf_data_good"))
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /.../prog_tests/log_buf.c:205:15: note: initialize the variable 'log_buf' to silence this warning
          char *log_buf;
                       ^
                        = NULL
  1 error generated.

Compiler rightfully detected that log_buf is uninitialized in one of failure path as indicated
in the above.

Proper initialization of 'log_buf' variable fixed the issue.

Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20220126181940.4105997-1-yhs@fb.com
tools/testing/selftests/bpf/prog_tests/log_buf.c

index e469b02..1ef377a 100644 (file)
@@ -202,7 +202,7 @@ static void bpf_btf_load_log_buf(void)
        const void *raw_btf_data;
        __u32 raw_btf_size;
        struct btf *btf;
-       char *log_buf;
+       char *log_buf = NULL;
        int fd = -1;
 
        btf = btf__new_empty();