BPF List
 help / color / mirror / Atom feed
* [PATCH bpf-next v3 00/10] Support BTF_KIND_TYPE_TAG for btf_type_tag attributes
@ 2021-11-12  1:26 Yonghong Song
  2021-11-12  1:26 ` [PATCH bpf-next v3 01/10] bpf: " Yonghong Song
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: Yonghong Song @ 2021-11-12  1:26 UTC (permalink / raw)
  To: bpf
  Cc: Alexei Starovoitov, Andrii Nakryiko, Daniel Borkmann,
	Jose E . Marchesi, kernel-team

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.

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  | 157 +++++++++++++++++-
 .../selftests/bpf/prog_tests/btf_tag.c        |  44 ++++-
 .../selftests/bpf/prog_tests/btf_write.c      |  67 +++++---
 .../bpf/progs/{tag.c => btf_decl_tag.c}       |   4 -
 .../selftests/bpf/progs/btf_type_tag.c        |  25 +++
 tools/testing/selftests/bpf/test_btf.h        |   3 +
 19 files changed, 370 insertions(+), 53 deletions(-)
 rename tools/testing/selftests/bpf/progs/{tag.c => btf_decl_tag.c} (94%)
 create mode 100644 tools/testing/selftests/bpf/progs/btf_type_tag.c

-- 
2.30.2


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2021-11-12  1:46 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-12  1:26 [PATCH bpf-next v3 00/10] Support BTF_KIND_TYPE_TAG for btf_type_tag attributes Yonghong Song
2021-11-12  1:26 ` [PATCH bpf-next v3 01/10] bpf: " Yonghong Song
2021-11-12  1:26 ` [PATCH bpf-next v3 02/10] libbpf: Support BTF_KIND_TYPE_TAG Yonghong Song
2021-11-12  1:26 ` [PATCH bpf-next v3 03/10] bpftool: " Yonghong Song
2021-11-12  1:26 ` [PATCH bpf-next v3 04/10] selftests/bpf: Test libbpf API function btf__add_type_tag() Yonghong Song
2021-11-12  1:26 ` [PATCH bpf-next v3 05/10] selftests/bpf: Add BTF_KIND_TYPE_TAG unit tests Yonghong Song
2021-11-12  1:26 ` [PATCH bpf-next v3 06/10] selftests/bpf: Test BTF_KIND_DECL_TAG for deduplication Yonghong Song
2021-11-12  1:26 ` [PATCH bpf-next v3 07/10] selftests/bpf: Rename progs/tag.c to progs/btf_decl_tag.c Yonghong Song
2021-11-12  1:26 ` [PATCH bpf-next v3 08/10] selftests/bpf: Add a C test for btf_type_tag Yonghong Song
2021-11-12  1:26 ` [PATCH bpf-next v3 09/10] selftests/bpf: Clarify llvm dependency with btf_tag selftest Yonghong Song
2021-11-12  1:26 ` [PATCH bpf-next v3 10/10] docs/bpf: Update documentation for BTF_KIND_TYPE_TAG support Yonghong Song
2021-11-12  1:45 ` [PATCH bpf-next v3 00/10] Support BTF_KIND_TYPE_TAG for btf_type_tag attributes Alexei Starovoitov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox