All of lore.kernel.org
 help / color / mirror / Atom feed
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


             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.