LLVM patches ([1] for clang, [2] and [3] for BPF backend) added support for btf_type_tag attributes. This patch added support for the kernel. The main motivation for btf_type_tag is to bring kernel annotations __user, __rcu etc. to btf. With such information available in btf, bpf verifier can detect mis-usages and reject the program. For example, for __user tagged pointer, developers can then use proper helper like bpf_probe_read_kernel() etc. to read the data. BTF_KIND_TYPE_TAG may also useful for other tracing facility where instead of to require user to specify kernel/user address type, the kernel can detect it by itself with btf. Patch 1 added support in kernel, Patch 2 for libbpf and Patch 3 for bpftool. Patches 4-9 are for bpf selftests and Patch 10 updated docs/bpf/btf.rst file with new btf kind. [1] https://reviews.llvm.org/D111199 [2] https://reviews.llvm.org/D113222 [3] https://reviews.llvm.org/D113496 Yonghong Song (10): bpf: Support BTF_KIND_TYPE_TAG for btf_type_tag attributes libbpf: Support BTF_KIND_TYPE_TAG bpftool: Support BTF_KIND_TYPE_TAG selftests/bpf: Test libbpf API function btf__add_type_tag() selftests/bpf: Add BTF_KIND_TYPE_TAG unit tests selftests/bpf: Test BTF_KIND_DECL_TAG for deduplication selftests/bpf: Rename progs/tag.c to progs/btf_decl_tag.c selftests/bpf: Add a C test for btf_type_tag selftests/bpf: Clarify llvm dependency with btf_tag selftest docs/bpf: Update documentation for BTF_KIND_TYPE_TAG support Documentation/bpf/btf.rst | 13 +++- include/uapi/linux/btf.h | 3 +- kernel/bpf/btf.c | 14 +++- tools/bpf/bpftool/btf.c | 2 + tools/include/uapi/linux/btf.h | 3 +- tools/lib/bpf/btf.c | 23 +++++++ tools/lib/bpf/btf.h | 9 ++- tools/lib/bpf/btf_dump.c | 9 +++ tools/lib/bpf/libbpf.c | 31 ++++++++- tools/lib/bpf/libbpf.map | 1 + tools/lib/bpf/libbpf_internal.h | 2 + tools/testing/selftests/bpf/README.rst | 9 +-- tools/testing/selftests/bpf/btf_helpers.c | 4 +- tools/testing/selftests/bpf/prog_tests/btf.c | 64 ++++++++++++++++-- .../selftests/bpf/prog_tests/btf_tag.c | 44 ++++++++++-- .../selftests/bpf/prog_tests/btf_write.c | 67 +++++++++++-------- .../bpf/progs/{tag.c => btf_decl_tag.c} | 0 .../selftests/bpf/progs/btf_type_tag.c | 29 ++++++++ tools/testing/selftests/bpf/test_btf.h | 3 + 19 files changed, 281 insertions(+), 49 deletions(-) rename tools/testing/selftests/bpf/progs/{tag.c => btf_decl_tag.c} (100%) create mode 100644 tools/testing/selftests/bpf/progs/btf_type_tag.c -- 2.30.2