From: Yonghong Song <yhs@fb.com>
To: <bpf@vger.kernel.org>
Cc: Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
"Jose E . Marchesi" <jose.marchesi@oracle.com>,
<kernel-team@fb.com>
Subject: [PATCH bpf-next v3 00/10] Support BTF_KIND_TYPE_TAG for btf_type_tag attributes
Date: Thu, 11 Nov 2021 17:26:04 -0800 [thread overview]
Message-ID: <20211112012604.1504583-1-yhs@fb.com> (raw)
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
next reply other threads:[~2021-11-12 1:26 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-12 1:26 Yonghong Song [this message]
2021-11-12 1:26 ` [PATCH bpf-next v3 01/10] bpf: Support BTF_KIND_TYPE_TAG for btf_type_tag attributes 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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211112012604.1504583-1-yhs@fb.com \
--to=yhs@fb.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=jose.marchesi@oracle.com \
--cc=kernel-team@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.