diff options
author | Yonghong Song <yhs@fb.com> | 2022-11-29 21:21:47 -0800 |
---|---|---|
committer | Andrii Nakryiko <andrii@kernel.org> | 2022-11-30 17:13:25 -0800 |
commit | 3144bfa5078e0df7507a4de72061501e6a0e56be (patch) | |
tree | bf51c66d5b3e657474f4e03a6ec5585b9c094f29 /include | |
parent | 89903dcb3c2e134fb101de7921a19dd9f8418b4c (diff) | |
download | linux-stable-3144bfa5078e0df7507a4de72061501e6a0e56be.tar.gz linux-stable-3144bfa5078e0df7507a4de72061501e6a0e56be.tar.bz2 linux-stable-3144bfa5078e0df7507a4de72061501e6a0e56be.zip |
bpf: Fix a compilation failure with clang lto build
When building the kernel with clang lto (CONFIG_LTO_CLANG_FULL=y), the
following compilation error will appear:
$ make LLVM=1 LLVM_IAS=1 -j
...
ld.lld: error: ld-temp.o <inline asm>:26889:1: symbol 'cgroup_storage_map_btf_ids' is already defined
cgroup_storage_map_btf_ids:;
^
make[1]: *** [/.../bpf-next/scripts/Makefile.vmlinux_o:61: vmlinux.o] Error 1
In local_storage.c, we have
BTF_ID_LIST_SINGLE(cgroup_storage_map_btf_ids, struct, bpf_local_storage_map)
Commit c4bcfb38a95e ("bpf: Implement cgroup storage available to
non-cgroup-attached bpf progs") added the above identical BTF_ID_LIST_SINGLE
definition in bpf_cgrp_storage.c. With duplicated definitions, llvm linker
complains with lto build.
Also, extracting btf_id of 'struct bpf_local_storage_map' is defined four times
for sk, inode, task and cgrp local storages. Let us define a single global one
with a different name than cgroup_storage_map_btf_ids, which also fixed
the lto compilation error.
Fixes: c4bcfb38a95e ("bpf: Implement cgroup storage available to non-cgroup-attached bpf progs")
Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20221130052147.1591625-1-yhs@fb.com
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/btf_ids.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h index 93397711a68c..3a4f7cd882ca 100644 --- a/include/linux/btf_ids.h +++ b/include/linux/btf_ids.h @@ -266,5 +266,6 @@ MAX_BTF_TRACING_TYPE, extern u32 btf_tracing_ids[]; extern u32 bpf_cgroup_btf_id[]; +extern u32 bpf_local_storage_map_btf_id[]; #endif |