| From afdededab34f9a3753202f4f4d59e27626ee05c5 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 19 Mar 2021 19:21:17 +0000 |
| Subject: libbpf: Add explicit padding to btf_dump_emit_type_decl_opts |
| |
| From: KP Singh <kpsingh@kernel.org> |
| |
| [ Upstream commit ea24b19562fe5f72c78319dbb347b701818956d9 ] |
| |
| 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 |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/lib/bpf/btf.h | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/tools/lib/bpf/btf.h b/tools/lib/bpf/btf.h |
| index 1237bcd1dd17..5b8a6ea44b38 100644 |
| --- a/tools/lib/bpf/btf.h |
| +++ b/tools/lib/bpf/btf.h |
| @@ -173,6 +173,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 |
| |
| -- |
| 2.30.2 |
| |