Message ID | 20220817010504.4072757-1-davemarchevsky@fb.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | BPF |
Headers | show |
Series | [bpf-next] bpf: Sync include/uapi/linux/bpf.h with tools/include/uapi/linux/bpf.h | expand |
[ +Gustavo ] On 8/17/22 3:05 AM, Dave Marchevsky wrote: > Commit 94dfc73e7cf4 ("treewide: uapi: Replace zero-length arrays with > flexible-array members") modified bpf_lpm_trie_key struct's data member > in include/uapi/linux/bpf.h, but didn't make the same change in tools > dir's copy. Propagate it over and fix comment indentation as well. > > This is a nonfunctional change. > > Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com> Gustavo, 94dfc73e7cf4 ("treewide: uapi: Replace zero-length arrays with flexible-array members") breaks BPF when copied from include/uapi/linux/bpf.h to tools/include/uapi/linux/bpf.h : CI: https://github.com/kernel-patches/bpf/runs/7885234999?check_suite_focus=true [...] CLNG-BPF [test_maps] map_ptr_kern.o CLNG-BPF [test_maps] btf__core_reloc_arrays___diff_arr_val_sz.o CLNG-BPF [test_maps] test_bpf_cookie.o progs/map_ptr_kern.c:314:26: error: field 'trie_key' with variable sized type 'struct bpf_lpm_trie_key' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end] struct bpf_lpm_trie_key trie_key; ^ CLNG-BPF [test_maps] btf__core_reloc_type_based___diff.o 1 error generated. make: *** [Makefile:521: /tmp/runner/work/bpf/bpf/tools/testing/selftests/bpf/map_ptr_kern.o] Error 1 make: *** Waiting for unfinished jobs.... If you look at the selftest tools/testing/selftests/bpf/progs/map_ptr_kern.c +314 : /* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */ struct bpf_lpm_trie_key { __u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */ __u8 data[]; /* Arbitrary size */ }; struct lpm_key { struct bpf_lpm_trie_key trie_key; __u32 data; }; Did you try to compile the tree (or selftests) with LLVM? I doubt the UX will be nice if everyone now has to add -Wno-gnu-variable-sized-type-not-at-end .. > --- > include/uapi/linux/bpf.h | 2 +- > tools/include/uapi/linux/bpf.h | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h > index 934a2a8beb87..0b09b5463afd 100644 > --- a/include/uapi/linux/bpf.h > +++ b/include/uapi/linux/bpf.h > @@ -79,7 +79,7 @@ struct bpf_insn { > /* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */ > struct bpf_lpm_trie_key { > __u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */ > - __u8 data[]; /* Arbitrary size */ > + __u8 data[]; /* Arbitrary size */ > }; > > struct bpf_cgroup_storage_key { > diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h > index 1d6085e15fc8..0b09b5463afd 100644 > --- a/tools/include/uapi/linux/bpf.h > +++ b/tools/include/uapi/linux/bpf.h > @@ -79,7 +79,7 @@ struct bpf_insn { > /* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */ > struct bpf_lpm_trie_key { > __u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */ > - __u8 data[0]; /* Arbitrary size */ > + __u8 data[]; /* Arbitrary size */ > }; > > struct bpf_cgroup_storage_key { >
On 8/17/22 11:21 PM, Daniel Borkmann wrote: > [ +Gustavo ] > > On 8/17/22 3:05 AM, Dave Marchevsky wrote: >> Commit 94dfc73e7cf4 ("treewide: uapi: Replace zero-length arrays with >> flexible-array members") modified bpf_lpm_trie_key struct's data member >> in include/uapi/linux/bpf.h, but didn't make the same change in tools >> dir's copy. Propagate it over and fix comment indentation as well. >> >> This is a nonfunctional change. >> >> Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com> > > Gustavo, 94dfc73e7cf4 ("treewide: uapi: Replace zero-length arrays with flexible-array members") > breaks BPF when copied from include/uapi/linux/bpf.h to tools/include/uapi/linux/bpf.h : > > CI: https://github.com/kernel-patches/bpf/runs/7885234999?check_suite_focus=true > > [...] > CLNG-BPF [test_maps] map_ptr_kern.o > CLNG-BPF [test_maps] btf__core_reloc_arrays___diff_arr_val_sz.o > CLNG-BPF [test_maps] test_bpf_cookie.o > progs/map_ptr_kern.c:314:26: error: field 'trie_key' with variable sized type 'struct bpf_lpm_trie_key' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end] > struct bpf_lpm_trie_key trie_key; > ^ > CLNG-BPF [test_maps] btf__core_reloc_type_based___diff.o > 1 error generated. > make: *** [Makefile:521: /tmp/runner/work/bpf/bpf/tools/testing/selftests/bpf/map_ptr_kern.o] Error 1 > make: *** Waiting for unfinished jobs.... > > If you look at the selftest tools/testing/selftests/bpf/progs/map_ptr_kern.c +314 : > > /* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */ > struct bpf_lpm_trie_key { > __u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */ > __u8 data[]; /* Arbitrary size */ > }; > > struct lpm_key { > struct bpf_lpm_trie_key trie_key; > __u32 data; > }; > > Did you try to compile the tree (or selftests) with LLVM? I doubt the UX will be nice if everyone > now has to add -Wno-gnu-variable-sized-type-not-at-end .. Undone here until a different workaround can be found (affects both bpf and bpf-next): https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git/commit/?id=3024d95a4c521c278a7504ee9e80c57c3a9750e0 Thanks, Daniel
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 934a2a8beb87..0b09b5463afd 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -79,7 +79,7 @@ struct bpf_insn { /* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */ struct bpf_lpm_trie_key { __u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */ - __u8 data[]; /* Arbitrary size */ + __u8 data[]; /* Arbitrary size */ }; struct bpf_cgroup_storage_key { diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h index 1d6085e15fc8..0b09b5463afd 100644 --- a/tools/include/uapi/linux/bpf.h +++ b/tools/include/uapi/linux/bpf.h @@ -79,7 +79,7 @@ struct bpf_insn { /* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */ struct bpf_lpm_trie_key { __u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */ - __u8 data[0]; /* Arbitrary size */ + __u8 data[]; /* Arbitrary size */ }; struct bpf_cgroup_storage_key {
Commit 94dfc73e7cf4 ("treewide: uapi: Replace zero-length arrays with flexible-array members") modified bpf_lpm_trie_key struct's data member in include/uapi/linux/bpf.h, but didn't make the same change in tools dir's copy. Propagate it over and fix comment indentation as well. This is a nonfunctional change. Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com> --- include/uapi/linux/bpf.h | 2 +- tools/include/uapi/linux/bpf.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)