mbox series

[v2,0/3] Fix -Wmaybe-uninitialized warnings/errors

Message ID 20241022172329.3871958-1-ezulian@redhat.com (mailing list archive)
Headers show
Series Fix -Wmaybe-uninitialized warnings/errors | expand

Message

Eder Zulian Oct. 22, 2024, 5:23 p.m. UTC
Hello!

This v2 series initializes the variables 'set' and 'set8' in sets_patch to
NULL, along with the variables 'new_off' and 'pad_bits' and 'pad_type' in
btf_dump_emit_bit_padding to zero or NULL according to their types and the
variable 'o' in options__order to NULL to prevent compiler warnings/errors
which are observed when compiling with non-default compilation options, but
are not emitted by the compiler with the current default compilation
options.

- tools/bpf/resolve_btfids/main.c: Initialize the variables 'set' and
  'set8' in sets_patch to NULL.

- tools/lib/bpf/btf_dump.c: Initialize the variables 'new_off' and
  'pad_bits' and 'pad_type' in btf_dump_emit_bit_padding to zero/NULL

- tools/lib/subcmd/parse-options.c: Initialize the variable 'o' in
  options__order to NULL.
  Sam James mentioned that Michael Weiß had previously sent an alternative
  patch as
  https://lore.kernel.org/all/20240731085217.94928-1-michael.weiss@aisec.fraunhofer.de/

Tested on x86_64 with clang version 17.0.6 and gcc (GCC) 13.3.1.

  $ for c in gcc clang; do for o in fast g s z $(seq 0 3); do make -C \
  tools/bpf/resolve_btfids/ HOST_CC=${c} "HOSTCFLAGS=-O${o} -Wall" \
  clean all 2>&1 | tee ${c}-O${o}.out; done; done && \
  grep 'warning:\|error:' *.out

  [...]
  clang-O1.out:main.c:163:9: warning: ‘set8’ may be used uninitialized [-Wmaybe-uninitialized]
  clang-O1.out:main.c:163:9: warning: ‘set’ may be used uninitialized [-Wmaybe-uninitialized]
  clang-O2.out:main.c:163:9: warning: ‘set8’ may be used uninitialized [-Wmaybe-uninitialized]
  clang-O2.out:main.c:163:9: warning: ‘set’ may be used uninitialized [-Wmaybe-uninitialized]
  clang-O3.out:main.c:163:9: warning: ‘set8’ may be used uninitialized [-Wmaybe-uninitialized]
  clang-O3.out:main.c:163:9: warning: ‘set’ may be used uninitialized [-Wmaybe-uninitialized]
  clang-Ofast.out:main.c:163:9: warning: ‘set8’ may be used uninitialized [-Wmaybe-uninitialized]
  clang-Ofast.out:main.c:163:9: warning: ‘set’ may be used uninitialized [-Wmaybe-uninitialized]
  clang-Og.out:btf_dump.c:903:42: error: ‘new_off’ may be used uninitialized [-Werror=maybe-uninitialized]
  clang-Og.out:btf_dump.c:917:25: error: ‘pad_type’ may be used uninitialized [-Werror=maybe-uninitialized]
  clang-Og.out:btf_dump.c:930:20: error: ‘pad_bits’ may be used uninitialized [-Werror=maybe-uninitialized]
  clang-Os.out:parse-options.c:832:9: error: ‘o’ may be used uninitialized [-Werror=maybe-uninitialized]
  clang-Oz.out:parse-options.c:832:9: error: ‘o’ may be used uninitialized [-Werror=maybe-uninitialized]
  gcc-O1.out:main.c:163:9: warning: ‘set8’ may be used uninitialized [-Wmaybe-uninitialized]
  gcc-O1.out:main.c:163:9: warning: ‘set’ may be used uninitialized [-Wmaybe-uninitialized]
  gcc-O2.out:main.c:163:9: warning: ‘set8’ may be used uninitialized [-Wmaybe-uninitialized]
  gcc-O2.out:main.c:163:9: warning: ‘set’ may be used uninitialized [-Wmaybe-uninitialized]
  gcc-O3.out:main.c:163:9: warning: ‘set8’ may be used uninitialized [-Wmaybe-uninitialized]
  gcc-O3.out:main.c:163:9: warning: ‘set’ may be used uninitialized [-Wmaybe-uninitialized]
  gcc-Ofast.out:main.c:163:9: warning: ‘set8’ may be used uninitialized [-Wmaybe-uninitialized]
  gcc-Ofast.out:main.c:163:9: warning: ‘set’ may be used uninitialized [-Wmaybe-uninitialized]
  gcc-Og.out:btf_dump.c:903:42: error: ‘new_off’ may be used uninitialized [-Werror=maybe-uninitialized]
  gcc-Og.out:btf_dump.c:917:25: error: ‘pad_type’ may be used uninitialized [-Werror=maybe-uninitialized]
  gcc-Og.out:btf_dump.c:930:20: error: ‘pad_bits’ may be used uninitialized [-Werror=maybe-uninitialized]
  gcc-Os.out:parse-options.c:832:9: error: ‘o’ may be used uninitialized [-Werror=maybe-uninitialized]
  gcc-Oz.out:parse-options.c:832:9: error: ‘o’ may be used uninitialized [-Werror=maybe-uninitialized]

The above warnings and/or errors are fixed. However, they are observed with
current default compilation options.

Updates since v1:

- Incorporate feedback from reviewers. Add a comment about an alternative
  patch for parse-options.c sent before (based on comments from Sam James.)
  Split in multiple patches creating this series and a typo was fixed
  "Initiazlide" -> "Initialize" (suggested by Viktor Malik). State more
  clearly that the -Wmaybe-uninitialized issues only happen when compiling
  with non-default compilation options (based on comments from Yonghong
  Song.)

Thanks,

Eder Zulian (3):
  resolve_btfids: Fix compiler warnings
  libbpf: Prevent compiler warnings/errors
  libsubcmd: Silence compiler warning

 tools/bpf/resolve_btfids/main.c  | 4 ++--
 tools/lib/bpf/btf_dump.c         | 4 ++--
 tools/lib/subcmd/parse-options.c | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

Comments

Jiri Olsa Oct. 23, 2024, 8:54 a.m. UTC | #1
On Tue, Oct 22, 2024 at 07:23:26PM +0200, Eder Zulian wrote:

SNIP

> The above warnings and/or errors are fixed. However, they are observed with
> current default compilation options.
> 
> Updates since v1:
> 
> - Incorporate feedback from reviewers. Add a comment about an alternative
>   patch for parse-options.c sent before (based on comments from Sam James.)
>   Split in multiple patches creating this series and a typo was fixed
>   "Initiazlide" -> "Initialize" (suggested by Viktor Malik). State more
>   clearly that the -Wmaybe-uninitialized issues only happen when compiling
>   with non-default compilation options (based on comments from Yonghong
>   Song.)
> 
> Thanks,
> 
> Eder Zulian (3):
>   resolve_btfids: Fix compiler warnings
>   libbpf: Prevent compiler warnings/errors
>   libsubcmd: Silence compiler warning

Acked-by: Jiri Olsa <jolsa@kernel.org>

jirka

> 
>  tools/bpf/resolve_btfids/main.c  | 4 ++--
>  tools/lib/bpf/btf_dump.c         | 4 ++--
>  tools/lib/subcmd/parse-options.c | 2 +-
>  3 files changed, 5 insertions(+), 5 deletions(-)
> 
> -- 
> 2.46.2
>
patchwork-bot+netdevbpf@kernel.org Oct. 23, 2024, 9:50 p.m. UTC | #2
Hello:

This series was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <andrii@kernel.org>:

On Tue, 22 Oct 2024 19:23:26 +0200 you wrote:
> Hello!
> 
> This v2 series initializes the variables 'set' and 'set8' in sets_patch to
> NULL, along with the variables 'new_off' and 'pad_bits' and 'pad_type' in
> btf_dump_emit_bit_padding to zero or NULL according to their types and the
> variable 'o' in options__order to NULL to prevent compiler warnings/errors
> which are observed when compiling with non-default compilation options, but
> are not emitted by the compiler with the current default compilation
> options.
> 
> [...]

Here is the summary with links:
  - [v2,1/3] resolve_btfids: Fix compiler warnings
    https://git.kernel.org/bpf/bpf-next/c/2c3d022abe6c
  - [v2,2/3] libbpf: Prevent compiler warnings/errors
    https://git.kernel.org/bpf/bpf-next/c/7f4ec77f3fee
  - [v2,3/3] libsubcmd: Silence compiler warning
    https://git.kernel.org/bpf/bpf-next/c/7a4ffec9fd54

You are awesome, thank you!