libbpf: Add explicit padding to btf_dump_emit_type_decl_opts
authorKP Singh <kpsingh@kernel.org>
Fri, 19 Mar 2021 19:21:17 +0000 (19:21 +0000)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 19 Mar 2021 21:03:39 +0000 (14:03 -0700)
commitea24b19562fe5f72c78319dbb347b701818956d9
treec39ed23a8cfb3e93c7bc0d51c717512450bb9e51
parent6d8b271682e2e0ff6a793c76803a5506b5535a5a
libbpf: Add explicit padding to btf_dump_emit_type_decl_opts

Similar to
https://lore.kernel.org/bpf/20210313210920.1959628-2-andrii@kernel.org/

When DECLARE_LIBBPF_OPTS is used with inline field initialization, e.g:

  DECLARE_LIBBPF_OPTS(btf_dump_emit_type_decl_opts, opts,
    .field_name = var_ident,
    .indent_level = 2,
    .strip_mods = strip_mods,
  );

and compiled in debug mode, the compiler generates code which
leaves the padding uninitialized and triggers errors within libbpf APIs
which require strict zero initialization of OPTS structs.

Adding anonymous padding field fixes the issue.

Fixes: 9f81654eebe8 ("libbpf: Expose BTF-to-C type declaration emitting API")
Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: KP Singh <kpsingh@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20210319192117.2310658-1-kpsingh@kernel.org
tools/lib/bpf/btf.h