OpenCloudOS-Kernel/include/uapi
Daniel Borkmann 3024d95a4c bpf: Partially revert flexible-array member replacement
Partially revert 94dfc73e7c ("treewide: uapi: Replace zero-length arrays
with flexible-array members") given it breaks BPF UAPI.

For example, BPF CI run reveals build breakage under LLVM:

  [...]
    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....
  [...]

Typical usage of the bpf_lpm_trie_key is that the struct gets embedded into
a user defined key for the LPM BPF map, from the selftest example:

  struct bpf_lpm_trie_key {                 <-- UAPI exported struct
         __u32   prefixlen;
         __u8    data[];
  };

  struct lpm_key {                          <-- BPF program defined struct
         struct bpf_lpm_trie_key trie_key;
         __u32 data;
  };

Undo this for BPF until a different solution can be found. It's the only flexible-
array member case in the UAPI header.

This was discovered in BPF CI after Dave reported that the include/uapi/linux/bpf.h
header was out of sync with tools/include/uapi/linux/bpf.h after 94dfc73e7c. And
the subsequent sync attempt failed CI.

Fixes: 94dfc73e7c ("treewide: uapi: Replace zero-length arrays with flexible-array members")
Reported-by: Dave Marchevsky <davemarchevsky@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Cc: Gustavo A. R. Silva <gustavoars@kernel.org>
Link: https://lore.kernel.org/bpf/22aebc88-da67-f086-e620-dd4a16e2bc69@iogearbox.net
2022-08-17 23:45:47 +02:00
..
asm-generic TTY / Serial driver changes for 6.0-rc1 2022-08-08 11:31:40 -07:00
drm drm for 5.20/6.0 2022-08-03 19:52:08 -07:00
linux bpf: Partially revert flexible-array member replacement 2022-08-17 23:45:47 +02:00
misc habanalabs: add status of reset after device release 2022-07-12 09:09:31 +03:00
mtd mtdchar: prevent integer overflow in a safety check 2022-06-09 15:03:32 +02:00
rdma v5.20 pull request 2022-08-04 19:54:32 -07:00
scsi treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
sound sound updates for 6.0-rc1 2022-08-06 10:19:51 -07:00
video
xen Improve docs for IOCTL_GNTDEV_MAP_GRANT_REF 2022-02-03 08:23:32 +01:00
Kbuild