Commit ea24b195 authored by KP Singh's avatar KP Singh Committed by Andrii Nakryiko

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: 9f81654e ("libbpf: Expose BTF-to-C type declaration emitting API")
Suggested-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Signed-off-by: default avatarKP Singh <kpsingh@kernel.org>
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20210319192117.2310658-1-kpsingh@kernel.org
parent 6d8b2716
...@@ -176,6 +176,7 @@ struct btf_dump_emit_type_decl_opts { ...@@ -176,6 +176,7 @@ struct btf_dump_emit_type_decl_opts {
int indent_level; int indent_level;
/* strip all the const/volatile/restrict mods */ /* strip all the const/volatile/restrict mods */
bool strip_mods; bool strip_mods;
size_t :0;
}; };
#define btf_dump_emit_type_decl_opts__last_field strip_mods #define btf_dump_emit_type_decl_opts__last_field strip_mods
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment