]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
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)
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

index 3b0b17ba94a18d9cafb7959f80b04f3b3eaf3f57..b54f1c3ebd57e653565d74c14b78459f591dba7b 100644 (file)
@@ -176,6 +176,7 @@ struct btf_dump_emit_type_decl_opts {
        int indent_level;
        /* strip all the const/volatile/restrict mods */
        bool strip_mods;
+       size_t :0;
 };
 #define btf_dump_emit_type_decl_opts__last_field strip_mods