| From f7967c4b605457cbb43da64d8b711e932b96db8e Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 13 Mar 2021 13:09:17 -0800 |
| Subject: libbpf: Add explicit padding to bpf_xdp_set_link_opts |
| |
| From: Andrii Nakryiko <andrii@kernel.org> |
| |
| [ Upstream commit dde7b3f5f2f458297aeccfd4783e53ab8ca046db ] |
| |
| Adding such anonymous padding fixes the issue with uninitialized portions of |
| bpf_xdp_set_link_opts when using LIBBPF_DECLARE_OPTS macro with inline field |
| initialization: |
| |
| DECLARE_LIBBPF_OPTS(bpf_xdp_set_link_opts, opts, .old_fd = -1); |
| |
| When such code is compiled in debug mode, compiler is generating code that |
| leaves padding bytes uninitialized, which triggers error inside libbpf APIs |
| that do strict zero initialization checks for OPTS structs. |
| |
| Adding anonymous padding field fixes the issue. |
| |
| Fixes: bd5ca3ef93cd ("libbpf: Add function to set link XDP fd while specifying old program") |
| Signed-off-by: Andrii Nakryiko <andrii@kernel.org> |
| Signed-off-by: Alexei Starovoitov <ast@kernel.org> |
| Link: https://lore.kernel.org/bpf/20210313210920.1959628-2-andrii@kernel.org |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/lib/bpf/libbpf.h | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h |
| index 3c35eb401931..3d690d4e785c 100644 |
| --- a/tools/lib/bpf/libbpf.h |
| +++ b/tools/lib/bpf/libbpf.h |
| @@ -507,6 +507,7 @@ struct xdp_link_info { |
| struct bpf_xdp_set_link_opts { |
| size_t sz; |
| int old_fd; |
| + size_t :0; |
| }; |
| #define bpf_xdp_set_link_opts__last_field old_fd |
| |
| -- |
| 2.30.2 |
| |