From: Matt Bobrowski <mattbobrowski@google.com>
To: bpf@vger.kernel.org
Cc: ast@kernel.org, andrii@kernel.org, kpsingh@google.com,
jannh@google.com, jolsa@kernel.org, daniel@iogearbox.net,
brauner@kernel.org, torvalds@linux-foundation.org,
linux-fsdevel@vger.kernel.org
Subject: [PATCH v2 bpf-next 0/9] add new acquire/release BPF kfuncs
Date: Wed, 6 Mar 2024 07:39:14 +0000 [thread overview]
Message-ID: <cover.1709675979.git.mattbobrowski@google.com> (raw)
G'day All,
The original cover letter providing background context and motivating
factors around the needs for the BPF kfuncs introduced within this
patch series can be found here [0], so please do reference that if
need be.
Notably, one of the main contention points within v1 of this patch
series was that we were effectively leaning on some preexisting
in-kernel APIs such as get_task_exe_file() and get_mm_exe_file()
within some of the newly introduced BPF kfuncs. As noted in my
response here [1] though, I struggle to understand the technical
reasoning behind why exposing such in-kernel helpers, specifically
only to BPF LSM program types in the form of BPF kfuncs, is inherently
a terrible idea. So, until someone provides me with a sound technical
explanation as to why this cannot or should not be done, I'll continue
to lean on them. The alternative is to reimplement the necessary
in-kernel APIs within the BPF kfuncs, but that's just nonsensical IMO.
Changes since v1:
* Dropped the probe-read related patches [2, 3], which focused on
retroactively fixing bpf_d_path() such that it's susceptability
to memory corruption issues is drastically reduced. Rightfully so
though, it was deemed that reimplementing a semi-functional
variant of d_path() that was effectively backed by
copy_from_kernel_nofault() is suboptimal.
[0] https://lore.kernel.org/bpf/cover.1708377880.git.mattbobrowski@google.com/
[1] https://lore.kernel.org/bpf/ZdX83H7rTEwMYvs2@google.com/
[2] https://lore.kernel.org/bpf/5643840bd57d0c2345635552ae228dfb2ed3428c.1708377880.git.mattbobrowski@google.com/
[3] https://lore.kernel.org/bpf/18c7b587d43bbc7e80593bf51ea9d3eb99e47bc1.1708377880.git.mattbobrowski@google.com/
Matt Bobrowski (9):
bpf: rename fs_kfunc_set_ids to lsm_kfunc_set_ids
bpf: add new acquire/release BPF kfuncs for mm_struct
bpf/selftests: add selftests for mm_struct acquire/release BPF kfuncs
bpf: add new acquire/release based BPF kfuncs for exe_file
bpf/selftests: add selftests for exe_file acquire/release BPF kfuncs
bpf: add acquire/release based BPF kfuncs for fs_struct's paths
bpf/selftests: add selftests for root/pwd path based BPF kfuncs
bpf: add trusted d_path() based BPF kfunc bpf_path_d_path()
bpf/selftests: adapt selftests test_d_path for BPF kfunc
bpf_path_d_path()
kernel/trace/bpf_trace.c | 248 +++++++++++++++++-
.../testing/selftests/bpf/prog_tests/d_path.c | 80 ++++++
.../selftests/bpf/prog_tests/exe_file_kfunc.c | 49 ++++
.../selftests/bpf/prog_tests/mm_kfunc.c | 48 ++++
.../selftests/bpf/prog_tests/path_kfunc.c | 48 ++++
.../selftests/bpf/progs/d_path_common.h | 35 +++
.../bpf/progs/d_path_kfunc_failure.c | 66 +++++
.../bpf/progs/d_path_kfunc_success.c | 25 ++
.../bpf/progs/exe_file_kfunc_common.h | 23 ++
.../bpf/progs/exe_file_kfunc_failure.c | 181 +++++++++++++
.../bpf/progs/exe_file_kfunc_success.c | 52 ++++
.../selftests/bpf/progs/mm_kfunc_common.h | 19 ++
.../selftests/bpf/progs/mm_kfunc_failure.c | 103 ++++++++
.../selftests/bpf/progs/mm_kfunc_success.c | 30 +++
.../selftests/bpf/progs/path_kfunc_common.h | 20 ++
.../selftests/bpf/progs/path_kfunc_failure.c | 114 ++++++++
.../selftests/bpf/progs/path_kfunc_success.c | 30 +++
.../testing/selftests/bpf/progs/test_d_path.c | 20 +-
.../bpf/progs/test_d_path_check_rdonly_mem.c | 8 +-
.../bpf/progs/test_d_path_check_types.c | 8 +-
20 files changed, 1160 insertions(+), 47 deletions(-)
create mode 100644 tools/testing/selftests/bpf/prog_tests/exe_file_kfunc.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/mm_kfunc.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/path_kfunc.c
create mode 100644 tools/testing/selftests/bpf/progs/d_path_common.h
create mode 100644 tools/testing/selftests/bpf/progs/d_path_kfunc_failure.c
create mode 100644 tools/testing/selftests/bpf/progs/d_path_kfunc_success.c
create mode 100644 tools/testing/selftests/bpf/progs/exe_file_kfunc_common.h
create mode 100644 tools/testing/selftests/bpf/progs/exe_file_kfunc_failure.c
create mode 100644 tools/testing/selftests/bpf/progs/exe_file_kfunc_success.c
create mode 100644 tools/testing/selftests/bpf/progs/mm_kfunc_common.h
create mode 100644 tools/testing/selftests/bpf/progs/mm_kfunc_failure.c
create mode 100644 tools/testing/selftests/bpf/progs/mm_kfunc_success.c
create mode 100644 tools/testing/selftests/bpf/progs/path_kfunc_common.h
create mode 100644 tools/testing/selftests/bpf/progs/path_kfunc_failure.c
create mode 100644 tools/testing/selftests/bpf/progs/path_kfunc_success.c
--
2.44.0.278.ge034bb2e1d-goog
/M
next reply other threads:[~2024-03-06 7:39 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-06 7:39 Matt Bobrowski [this message]
2024-03-06 7:39 ` [PATCH v2 bpf-next 1/9] bpf: rename fs_kfunc_set_ids to lsm_kfunc_set_ids Matt Bobrowski
2024-03-06 7:39 ` [PATCH v2 bpf-next 2/9] bpf: add new acquire/release BPF kfuncs for mm_struct Matt Bobrowski
2024-03-06 11:50 ` Christian Brauner
2024-03-06 7:39 ` [PATCH v2 bpf-next 3/9] bpf/selftests: add selftests for mm_struct acquire/release BPF kfuncs Matt Bobrowski
2024-03-06 7:40 ` [PATCH v2 bpf-next 4/9] bpf: add new acquire/release based BPF kfuncs for exe_file Matt Bobrowski
2024-03-06 11:31 ` Christian Brauner
2024-03-06 7:40 ` [PATCH v2 bpf-next 5/9] bpf/selftests: add selftests for exe_file acquire/release BPF kfuncs Matt Bobrowski
2024-03-06 7:40 ` [PATCH v2 bpf-next 6/9] bpf: add acquire/release based BPF kfuncs for fs_struct's paths Matt Bobrowski
2024-03-06 11:47 ` Christian Brauner
2024-03-06 7:40 ` [PATCH v2 bpf-next 7/9] bpf/selftests: add selftests for root/pwd path based BPF kfuncs Matt Bobrowski
2024-03-06 7:40 ` [PATCH v2 bpf-next 9/9] bpf/selftests: adapt selftests test_d_path for BPF kfunc bpf_path_d_path() Matt Bobrowski
2024-03-06 7:40 ` [PATCH v2 bpf-next 8/9] bpf: add trusted d_path() based " Matt Bobrowski
2024-03-06 11:21 ` [PATCH v2 bpf-next 0/9] add new acquire/release BPF kfuncs Christian Brauner
2024-03-06 12:13 ` Christian Brauner
2024-03-06 21:44 ` Paul Moore
2024-03-07 4:05 ` Alexei Starovoitov
2024-03-07 9:54 ` Christian Brauner
2024-03-07 20:50 ` Paul Moore
2024-03-08 3:25 ` Alexei Starovoitov
2024-03-08 10:58 ` Christian Brauner
2024-03-08 3:11 ` Alexei Starovoitov
2024-03-08 10:35 ` Christian Brauner
2024-03-09 1:23 ` Alexei Starovoitov
2024-03-11 12:00 ` Christian Brauner
2024-03-12 17:06 ` Matt Bobrowski
2024-03-12 20:11 ` Matt Bobrowski
2024-03-18 13:24 ` Christian Brauner
2024-03-13 21:05 ` Alexei Starovoitov
2024-03-18 13:14 ` Christian Brauner
2024-03-27 21:41 ` 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=cover.1709675979.git.mattbobrowski@google.com \
--to=mattbobrowski@google.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=brauner@kernel.org \
--cc=daniel@iogearbox.net \
--cc=jannh@google.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@google.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).