Re: [PATCH bpf-next] bpf: Sync include/uapi/linux/bpf.h with tools/include/uapi/linux/bpf.h

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[ +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@xxxxxx>

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 {





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux