Skip to content
Snippets Groups Projects
Commit 661499f7 authored by Artem Savkov's avatar Artem Savkov
Browse files

bpf: Partially revert flexible-array member replacement

Bugzilla: https://bugzilla.redhat.com/2137876



commit 3024d95a
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Wed Aug 17 23:32:09 2022 +0200

    bpf: Partially revert flexible-array member replacement
    
    Partially revert 94dfc73e ("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 94dfc73e. And
    the subsequent sync attempt failed CI.
    
    Fixes: 94dfc73e ("treewide: uapi: Replace zero-length arrays with flexible-array members")
Reported-by: default avatarDave Marchevsky <davemarchevsky@fb.com>
Signed-off-by: default avatarDaniel 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



Signed-off-by: default avatarArtem Savkov <asavkov@redhat.com>
parent 372b0324
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment