From: KP Singh <kpsingh@chromium.org>
To: linux-kernel@vger.kernel.org, bpf@vger.kernel.org
Cc: Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
Paul Turner <pjt@google.com>, Jann Horn <jannh@google.com>,
Hao Luo <haoluo@google.com>
Subject: [PATCH bpf-next v2 0/8] Implement task_local_storage
Date: Tue, 3 Nov 2020 16:31:24 +0100 [thread overview]
Message-ID: <20201103153132.2717326-1-kpsingh@chromium.org> (raw)
From: KP Singh <kpsingh@google.com>
# v1 -> v2
- Updated the refcounting for task_struct and simplified conversion
of fd -> struct pid.
- Some fixes suggested by Martin and Andrii, notably:
* long return type for the bpf_task_storage_delete helper (update
for bpf_inode_storage_delete will be sent separately).
* Remove extra nullness check to task_storage_ptr in map syscall
ops.
* Changed the argument signature of the BPF helpers to use
task_struct pointer in uapi headers.
* Remove unnecessary verifier logic for the bpf_get_current_task_btf
helper.
* Split the changes for bpftool and libbpf.
- Exercised syscall operations for local storage (kept a simpler verison
in test_local_storage.c, the eventual goal will be to update
sk_storage_map.c for all local storage types).
- Formatting fixes + Rebase.
We already have socket and inode local storage since [1]
This patch series:
* Implements bpf_local_storage for task_struct.
* Implements the bpf_get_current_task_btf helper which returns a BTF
pointer to the current task. Not only is this generally cleaner
(reading from the task_struct currently requires BPF_CORE_READ), it
also allows the BTF pointer to be used in task_local_storage helpers.
* In order to implement this helper, a RET_PTR_TO_BTF_ID is introduced
which works similar to RET_PTR_TO_BTF_ID_OR_NULL but does not require
a nullness check.
* Implements a detection in selftests which uses the
task local storage to deny a running executable from unlinking itself.
[1]: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id=f836a56e84ffc9f1a1cd73f77e10404ca46a4616
KP Singh (8):
bpf: Implement task local storage
libbpf: Add support for task local storage
bpftool: Add support for task local storage
bpf: Implement get_current_task_btf and RET_PTR_TO_BTF_ID
bpf: Fix tests for local_storage
bpf: Update selftests for local_storage to use vmlinux.h
bpf: Add tests for task_local_storage
bpf: Exercise syscall operations for inode and sk storage
include/linux/bpf.h | 1 +
include/linux/bpf_lsm.h | 23 ++
include/linux/bpf_types.h | 1 +
include/uapi/linux/bpf.h | 48 +++
kernel/bpf/Makefile | 1 +
kernel/bpf/bpf_lsm.c | 4 +
kernel/bpf/bpf_task_storage.c | 313 ++++++++++++++++++
kernel/bpf/syscall.c | 3 +-
kernel/bpf/verifier.c | 17 +-
kernel/trace/bpf_trace.c | 16 +
security/bpf/hooks.c | 2 +
.../bpf/bpftool/Documentation/bpftool-map.rst | 3 +-
tools/bpf/bpftool/bash-completion/bpftool | 2 +-
tools/bpf/bpftool/map.c | 4 +-
tools/include/uapi/linux/bpf.h | 48 +++
tools/lib/bpf/libbpf_probes.c | 2 +
.../bpf/prog_tests/test_local_storage.c | 181 +++++++++-
.../selftests/bpf/progs/local_storage.c | 87 +++--
18 files changed, 705 insertions(+), 51 deletions(-)
create mode 100644 kernel/bpf/bpf_task_storage.c
--
2.29.1.341.ge80a0c044ae-goog
next reply other threads:[~2020-11-03 15:31 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-03 15:31 KP Singh [this message]
2020-11-03 15:31 ` [PATCH bpf-next v2 1/8] bpf: Implement task local storage KP Singh
2020-11-03 23:47 ` Song Liu
2020-11-03 23:54 ` KP Singh
2020-11-03 15:31 ` [PATCH bpf-next v2 2/8] libbpf: Add support for " KP Singh
2020-11-03 19:28 ` Andrii Nakryiko
2020-11-03 20:28 ` KP Singh
2020-11-03 15:31 ` [PATCH bpf-next v2 3/8] bpftool: " KP Singh
2020-11-03 23:50 ` Song Liu
2020-11-03 15:31 ` [PATCH bpf-next v2 4/8] bpf: Implement get_current_task_btf and RET_PTR_TO_BTF_ID KP Singh
2020-11-03 23:57 ` Song Liu
2020-11-03 15:31 ` [PATCH bpf-next v2 5/8] bpf: Fix tests for local_storage KP Singh
2020-11-04 0:16 ` Song Liu
2020-11-03 15:31 ` [PATCH bpf-next v2 6/8] bpf: Update selftests for local_storage to use vmlinux.h KP Singh
2020-11-04 0:16 ` Song Liu
2020-11-03 15:31 ` [PATCH bpf-next v2 7/8] bpf: Add tests for task_local_storage KP Singh
2020-11-03 18:47 ` Alexei Starovoitov
2020-11-03 18:59 ` KP Singh
2020-11-04 0:05 ` KP Singh
2020-11-04 1:27 ` Alexei Starovoitov
2020-11-04 1:55 ` KP Singh
2020-11-04 1:57 ` Alexei Starovoitov
2020-11-04 6:51 ` John Fastabend
2020-11-04 11:03 ` KP Singh
2020-11-04 11:11 ` KP Singh
2020-11-03 15:31 ` [PATCH bpf-next v2 8/8] bpf: Exercise syscall operations for inode and sk storage KP Singh
2020-11-03 22:32 ` Song Liu
2020-11-03 22:58 ` KP Singh
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=20201103153132.2717326-1-kpsingh@chromium.org \
--to=kpsingh@chromium.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=haoluo@google.com \
--cc=jannh@google.com \
--cc=kafai@fb.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pjt@google.com \
--cc=songliubraving@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.