OSDN Git Service

Merge branch 'Support BTF_KIND_TYPE_TAG for btf_type_tag attributes'
authorAlexei Starovoitov <ast@kernel.org>
Fri, 12 Nov 2021 01:41:12 +0000 (17:41 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 12 Nov 2021 01:41:12 +0000 (17:41 -0800)
commit9faaffbe85edcbdc54096f7f87baa3bc4842a7e2
tree6a8410367d37d8b76451a9f35e2f0b9565f8c557
parent2326ff8d5c6628e581c87f37a8f6db1db7dc00ee
parentd52f5c639dd8605d2563b77b190e278f615a2b8a
Merge branch 'Support BTF_KIND_TYPE_TAG for btf_type_tag attributes'

Yonghong Song says:

====================

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

Changelogs:
  v2 -> v3:
    - rebase to resolve merge conflicts.
  v1 -> v2:
    - add more dedup tests.
    - remove build requirement for LLVM=1.
    - remove testing macro __has_attribute in bpf programs
      as it is always defined in recent clang compilers.
====================

Signed-off-by: Alexei Starovoitov <ast@kernel.org>