Message ID | 20220126181940.4105997-1-yhs@fb.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | BPF |
Headers | show |
Series | [bpf-next] selftests/bpf: fix a clang compilation error | expand |
On Wed, Jan 26, 2022 at 10:19 AM Yonghong Song <yhs@fb.com> wrote: > > 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. > Yep, strange that GCC didn't detect this. Applied to bpf-next, thanks! > Proper initialization of 'log_buf' variable fixed the issue. > > Signed-off-by: Yonghong Song <yhs@fb.com> > --- > tools/testing/selftests/bpf/prog_tests/log_buf.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/testing/selftests/bpf/prog_tests/log_buf.c b/tools/testing/selftests/bpf/prog_tests/log_buf.c > index e469b023962b..1ef377a7e731 100644 > --- a/tools/testing/selftests/bpf/prog_tests/log_buf.c > +++ b/tools/testing/selftests/bpf/prog_tests/log_buf.c > @@ -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(); > -- > 2.30.2 >
diff --git a/tools/testing/selftests/bpf/prog_tests/log_buf.c b/tools/testing/selftests/bpf/prog_tests/log_buf.c index e469b023962b..1ef377a7e731 100644 --- a/tools/testing/selftests/bpf/prog_tests/log_buf.c +++ b/tools/testing/selftests/bpf/prog_tests/log_buf.c @@ -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();
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> --- tools/testing/selftests/bpf/prog_tests/log_buf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)