* [PATCH bpf 0/2] bpf: Gate dynptr probe-read kfuncs like helpers
@ 2026-06-15 8:31 Nuoqi Gui
2026-06-15 8:31 ` [PATCH bpf 1/2] " Nuoqi Gui
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Nuoqi Gui @ 2026-06-15 8:31 UTC (permalink / raw)
To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
Eduard Zingerman, Kumar Kartikeya Dwivedi
Cc: Martin KaFai Lau, Mykyta Yatsenko, Shuah Khan, bpf,
linux-kselftest, linux-kernel, Nuoqi Gui
The dynptr probe-read kfuncs are registered as common kfuncs. That lets a
program with the generic kfunc privilege gate call
bpf_probe_read_kernel_dynptr(), while the legacy bpf_probe_read_kernel()
helper is exposed only with CAP_PERFMON and is blocked by kernel-read
lockdown.
Gate the four nofault probe-read dynptr kfuncs with CAP_PERFMON, and apply
the existing LOCKDOWN_BPF_READ_KERNEL policy to the kernel-read dynptr
variants. Add focused selftests that expect CAP_BPF without CAP_PERFMON
to be insufficient for bpf_probe_read_user_dynptr(),
bpf_probe_read_kernel_dynptr(), bpf_probe_read_user_str_dynptr(), and
bpf_probe_read_kernel_str_dynptr().
Bounded impact:
- Requires privileged BPF program loading with CAP_BPF.
- No unprivileged trigger, arbitrary disclosure primitive, memory
corruption, privilege escalation, CVE, embargo, or security escalation is
claimed.
Validation:
- The focused dynptr selftest loader exercises the CAP_BPF-only program load
boundary for bpf_probe_read_user_dynptr(),
bpf_probe_read_kernel_dynptr(), bpf_probe_read_user_str_dynptr(), and
bpf_probe_read_kernel_str_dynptr().
- Unpatched bpf at 8496d9020ff37 ("Merge branch 'arena_direct_access'"):
FAIL as expected because all four programs still load with CAP_BPF and
without CAP_PERFMON.
- Patched with this series: PASS because all four same programs are rejected
with -EACCES when loaded with CAP_BPF and without CAP_PERFMON.
Fixes: a498ee7576de ("bpf: Implement dynptr copy kfuncs")
Signed-off-by: Nuoqi Gui <gnq25@mails.tsinghua.edu.cn>
---
Nuoqi Gui (2):
bpf: Gate dynptr probe-read kfuncs like helpers
selftests/bpf: Cover dynptr probe-read kfunc capability gate
kernel/bpf/helpers.c | 32 +++++++++
tools/testing/selftests/bpf/prog_tests/dynptr.c | 66 +++++++++++++++++++
tools/testing/selftests/bpf/progs/dynptr_success.c | 75 ++++++++++++++++++++++
3 files changed, 173 insertions(+)
---
base-commit: 8496d9020ff37a33c2a7b2fc84350fd03ffbde78
change-id: 20260615-f01-07-dynptr-probe-read-cap-4dee7066bf5f
Best regards,
--
Nuoqi Gui <gnq25@mails.tsinghua.edu.cn>
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH bpf 1/2] bpf: Gate dynptr probe-read kfuncs like helpers 2026-06-15 8:31 [PATCH bpf 0/2] bpf: Gate dynptr probe-read kfuncs like helpers Nuoqi Gui @ 2026-06-15 8:31 ` Nuoqi Gui 2026-06-15 8:55 ` sashiko-bot 2026-06-15 8:31 ` [PATCH bpf 2/2] selftests/bpf: Cover dynptr probe-read kfunc capability gate Nuoqi Gui 2026-06-15 15:48 ` [PATCH bpf 0/2] bpf: Gate dynptr probe-read kfuncs like helpers Alexei Starovoitov 2 siblings, 1 reply; 7+ messages in thread From: Nuoqi Gui @ 2026-06-15 8:31 UTC (permalink / raw) To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Eduard Zingerman, Kumar Kartikeya Dwivedi Cc: Martin KaFai Lau, Mykyta Yatsenko, Shuah Khan, bpf, linux-kselftest, linux-kernel, Nuoqi Gui The bpf_probe_read_{user,kernel}{,_str}_dynptr() kfuncs provide probe-read style nofault copies into dynptr-backed BPF memory. Their legacy helper counterparts are exposed only to programs with CAP_PERFMON, and the kernel-read helpers are additionally blocked by LOCKDOWN_BPF_READ_KERNEL. The dynptr kfuncs are registered in the common kfunc set, so the verifier currently allows them with the generic kfunc privilege gate. Add a common kfunc filter that mirrors the helper policy for these probe-read dynptr kfuncs: require CAP_PERFMON for all four nofault probe-read variants and apply the existing lockdown check to the kernel-read variants. This preserves the existing dynptr copy implementation while aligning the capability policy with the legacy probe-read helpers. Fixes: a498ee7576de ("bpf: Implement dynptr copy kfuncs") Signed-off-by: Nuoqi Gui <gnq25@mails.tsinghua.edu.cn> --- kernel/bpf/helpers.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c index 9ca195104667..fbef89196f85 100644 --- a/kernel/bpf/helpers.c +++ b/kernel/bpf/helpers.c @@ -4961,9 +4961,41 @@ BTF_ID_FLAGS(func, bpf_dynptr_file_discard) BTF_ID_FLAGS(func, bpf_timer_cancel_async) BTF_KFUNCS_END(common_btf_ids) +#ifdef CONFIG_BPF_EVENTS +BTF_KFUNCS_START(probe_read_dynptr_kfunc_ids) +BTF_ID_FLAGS(func, bpf_probe_read_user_dynptr) +BTF_ID_FLAGS(func, bpf_probe_read_kernel_dynptr) +BTF_ID_FLAGS(func, bpf_probe_read_user_str_dynptr) +BTF_ID_FLAGS(func, bpf_probe_read_kernel_str_dynptr) +BTF_KFUNCS_END(probe_read_dynptr_kfunc_ids) + +BTF_KFUNCS_START(probe_read_kernel_dynptr_kfunc_ids) +BTF_ID_FLAGS(func, bpf_probe_read_kernel_dynptr) +BTF_ID_FLAGS(func, bpf_probe_read_kernel_str_dynptr) +BTF_KFUNCS_END(probe_read_kernel_dynptr_kfunc_ids) +#endif + +static int common_kfunc_filter(const struct bpf_prog *prog, u32 kfunc_id) +{ +#ifdef CONFIG_BPF_EVENTS + if (!btf_id_set8_contains(&probe_read_dynptr_kfunc_ids, kfunc_id)) + return 0; + + if (!bpf_token_capable(prog->aux->token, CAP_PERFMON)) + return -EACCES; + + if (btf_id_set8_contains(&probe_read_kernel_dynptr_kfunc_ids, kfunc_id) && + security_locked_down(LOCKDOWN_BPF_READ_KERNEL) < 0) + return -EACCES; +#endif + + return 0; +} + static const struct btf_kfunc_id_set common_kfunc_set = { .owner = THIS_MODULE, .set = &common_btf_ids, + .filter = common_kfunc_filter, }; static int __init kfunc_init(void) -- 2.34.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH bpf 1/2] bpf: Gate dynptr probe-read kfuncs like helpers 2026-06-15 8:31 ` [PATCH bpf 1/2] " Nuoqi Gui @ 2026-06-15 8:55 ` sashiko-bot 0 siblings, 0 replies; 7+ messages in thread From: sashiko-bot @ 2026-06-15 8:55 UTC (permalink / raw) To: Nuoqi Gui; +Cc: bpf Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: Pre-existing issues: - [High] The patch fails to apply the CAP_PERFMON privilege check to the dynptr `copy_from_user` kfuncs (e.g., `bpf_copy_from_user_task_dynptr`), bypassing the security requirements enforced on cross-process memory reads. -- commit 6b909427f5d275b8ba84a3cae17389eff1d7a985 Author: Nuoqi Gui <gnq25@mails.tsinghua.edu.cn> bpf: Gate dynptr probe-read kfuncs like helpers This patch adds a common kfunc filter that mirrors the helper policy for probe-read dynptr kfuncs. It requires CAP_PERFMON for all four nofault probe-read variants and applies the lockdown check to kernel-read variants. > diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c > index 9ca1951046679..fbef89196f851 100644 > --- a/kernel/bpf/helpers.c > +++ b/kernel/bpf/helpers.c > @@ -4961,9 +4961,41 @@ BTF_ID_FLAGS(func, bpf_dynptr_file_discard) > BTF_ID_FLAGS(func, bpf_timer_cancel_async) > BTF_KFUNCS_END(common_btf_ids) > > +#ifdef CONFIG_BPF_EVENTS > +BTF_KFUNCS_START(probe_read_dynptr_kfunc_ids) > +BTF_ID_FLAGS(func, bpf_probe_read_user_dynptr) > +BTF_ID_FLAGS(func, bpf_probe_read_kernel_dynptr) > +BTF_ID_FLAGS(func, bpf_probe_read_user_str_dynptr) > +BTF_ID_FLAGS(func, bpf_probe_read_kernel_str_dynptr) > +BTF_KFUNCS_END(probe_read_dynptr_kfunc_ids) [Severity: High] This is a pre-existing issue, but shouldn't the copy_from_user dynptr kfuncs (such as bpf_copy_from_user_task_dynptr and bpf_copy_from_user_task_str_dynptr) also be included in this set? Because they are missing from this set, they remain available to BPF_PROG_TYPE_SYSCALL programs, which do not require CAP_PERFMON to load. > + > +BTF_KFUNCS_START(probe_read_kernel_dynptr_kfunc_ids) > +BTF_ID_FLAGS(func, bpf_probe_read_kernel_dynptr) > +BTF_ID_FLAGS(func, bpf_probe_read_kernel_str_dynptr) > +BTF_KFUNCS_END(probe_read_kernel_dynptr_kfunc_ids) > +#endif > + > +static int common_kfunc_filter(const struct bpf_prog *prog, u32 kfunc_id) > +{ > +#ifdef CONFIG_BPF_EVENTS > + if (!btf_id_set8_contains(&probe_read_dynptr_kfunc_ids, kfunc_id)) > + return 0; [Severity: High] This is a pre-existing issue, but does this explicit return leave the sleepable cross-task memory read kfuncs completely unrestricted? An attacker with only CAP_BPF could load a sleepable syscall program, obtain a task reference using the bpf_task_from_pid() kfunc, and call bpf_copy_from_user_task_dynptr() to read memory from any process on the system (including root-owned processes). This bypasses security requirements because access_process_vm() does not internally enforce ptrace_may_access checks, relying entirely on the BPF verifier's capability gates, which are skipped here. > + > + if (!bpf_token_capable(prog->aux->token, CAP_PERFMON)) > + return -EACCES; -- Sashiko AI review · https://sashiko.dev/#/patchset/20260615-f01-07-dynptr-probe-read-cap-v1-0-e626cd61a381@mails.tsinghua.edu.cn?part=1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH bpf 2/2] selftests/bpf: Cover dynptr probe-read kfunc capability gate 2026-06-15 8:31 [PATCH bpf 0/2] bpf: Gate dynptr probe-read kfuncs like helpers Nuoqi Gui 2026-06-15 8:31 ` [PATCH bpf 1/2] " Nuoqi Gui @ 2026-06-15 8:31 ` Nuoqi Gui 2026-06-15 8:41 ` sashiko-bot 2026-06-15 15:48 ` [PATCH bpf 0/2] bpf: Gate dynptr probe-read kfuncs like helpers Alexei Starovoitov 2 siblings, 1 reply; 7+ messages in thread From: Nuoqi Gui @ 2026-06-15 8:31 UTC (permalink / raw) To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Eduard Zingerman, Kumar Kartikeya Dwivedi Cc: Martin KaFai Lau, Mykyta Yatsenko, Shuah Khan, bpf, linux-kselftest, linux-kernel, Nuoqi Gui Add focused dynptr selftest programs that load socket-filter programs using bpf_dynptr_from_mem() followed by each nofault probe-read dynptr kfunc: bpf_probe_read_user_dynptr(), bpf_probe_read_kernel_dynptr(), bpf_probe_read_user_str_dynptr(), and bpf_probe_read_kernel_str_dynptr(). Declare the dynptr kfuncs used by this BPF object locally in dynptr_success.c so the dynptr BPF object builds with explicit prototypes. The harness first verifies that the program loads with the caller's normal capabilities. It then drops CAP_PERFMON and CAP_SYS_ADMIN while keeping CAP_BPF effective and expects each same program load to fail with -EACCES. This covers the policy boundary that these dynptr probe-read kfuncs should not be callable with CAP_BPF alone. Signed-off-by: Nuoqi Gui <gnq25@mails.tsinghua.edu.cn> --- tools/testing/selftests/bpf/prog_tests/dynptr.c | 66 +++++++++++++++++++ tools/testing/selftests/bpf/progs/dynptr_success.c | 75 ++++++++++++++++++++++ 2 files changed, 141 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/dynptr.c b/tools/testing/selftests/bpf/prog_tests/dynptr.c index 5fda11590708..5235b47e3342 100644 --- a/tools/testing/selftests/bpf/prog_tests/dynptr.c +++ b/tools/testing/selftests/bpf/prog_tests/dynptr.c @@ -3,6 +3,7 @@ #include <test_progs.h> #include <network_helpers.h> +#include "cap_helpers.h" #include "dynptr_fail.skel.h" #include "dynptr_success.skel.h" @@ -53,8 +54,66 @@ static struct { {"test_copy_from_user_task_str_dynptr", SETUP_SYSCALL_SLEEP}, }; +static const char * const probe_read_cap_tests[] = { + "test_probe_read_user_dynptr_cap", + "test_probe_read_kernel_dynptr_cap", + "test_probe_read_user_str_dynptr_cap", + "test_probe_read_kernel_str_dynptr_cap", +}; + #define PAGE_SIZE_64K 65536 +static int load_probe_read_cap_prog(const char *prog_name) +{ + struct bpf_program *prog, *tmp; + struct dynptr_success *skel; + int err; + + skel = dynptr_success__open(); + if (!ASSERT_OK_PTR(skel, "dynptr_success__open")) + return -EINVAL; + + bpf_object__for_each_program(tmp, skel->obj) + bpf_program__set_autoload(tmp, false); + + prog = bpf_object__find_program_by_name(skel->obj, prog_name); + if (!ASSERT_OK_PTR(prog, "bpf_object__find_program_by_name")) { + err = -ENOENT; + goto cleanup; + } + + bpf_program__set_autoload(prog, true); + err = dynptr_success__load(skel); + +cleanup: + dynptr_success__destroy(skel); + return err; +} + +static void verify_probe_read_cap(const char *prog_name) +{ + __u64 old_caps = 0; + int err; + + err = load_probe_read_cap_prog(prog_name); + if (!ASSERT_OK(err, "full_caps_load")) + return; + + err = cap_enable_effective(1ULL << CAP_BPF, &old_caps); + if (!ASSERT_OK(err, "enable_cap_bpf")) + return; + + err = cap_disable_effective(1ULL << CAP_SYS_ADMIN | 1ULL << CAP_PERFMON, NULL); + if (!ASSERT_OK(err, "disable_cap_sys_admin_perfmon")) + goto restore_cap; + + err = load_probe_read_cap_prog(prog_name); + ASSERT_EQ(err, -EACCES, "cap_bpf_without_perfmon_load"); + +restore_cap: + cap_enable_effective(old_caps, NULL); +} + static void verify_success(const char *prog_name, enum test_setup_type setup_type) { char user_data[384] = {[0 ... 382] = 'a', '\0'}; @@ -185,6 +244,13 @@ void test_dynptr(void) { int i; + for (i = 0; i < ARRAY_SIZE(probe_read_cap_tests); i++) { + if (!test__start_subtest(probe_read_cap_tests[i])) + continue; + + verify_probe_read_cap(probe_read_cap_tests[i]); + } + for (i = 0; i < ARRAY_SIZE(success_tests); i++) { if (!test__start_subtest(success_tests[i].prog_name)) continue; diff --git a/tools/testing/selftests/bpf/progs/dynptr_success.c b/tools/testing/selftests/bpf/progs/dynptr_success.c index e0745b6e467e..5b4e22198598 100644 --- a/tools/testing/selftests/bpf/progs/dynptr_success.c +++ b/tools/testing/selftests/bpf/progs/dynptr_success.c @@ -34,6 +34,13 @@ struct { __type(value, __u32); } array_map SEC(".maps"); +struct { + __uint(type, BPF_MAP_TYPE_ARRAY); + __uint(max_entries, 1); + __type(key, __u32); + __type(value, __u8[32]); +} probe_read_map SEC(".maps"); + SEC("?tp/syscalls/sys_enter_nanosleep") int test_read_write(void *ctx) { @@ -1092,6 +1099,74 @@ int test_probe_read_kernel_str_dynptr(struct xdp_md *xdp) return XDP_PASS; } +SEC("?socket") +int test_probe_read_user_dynptr_cap(struct __sk_buff *skb) +{ + struct bpf_dynptr ptr; + __u32 key = 0; + void *value; + + value = bpf_map_lookup_elem(&probe_read_map, &key); + if (!value) + return 0; + + if (bpf_dynptr_from_mem(value, 32, 0, &ptr)) + return 0; + + return bpf_probe_read_user_dynptr(&ptr, 0, 8, value); +} + +SEC("?socket") +int test_probe_read_kernel_dynptr_cap(struct __sk_buff *skb) +{ + struct bpf_dynptr ptr; + __u32 key = 0; + void *value; + + value = bpf_map_lookup_elem(&probe_read_map, &key); + if (!value) + return 0; + + if (bpf_dynptr_from_mem(value, 32, 0, &ptr)) + return 0; + + return bpf_probe_read_kernel_dynptr(&ptr, 0, 8, value); +} + +SEC("?socket") +int test_probe_read_user_str_dynptr_cap(struct __sk_buff *skb) +{ + struct bpf_dynptr ptr; + __u32 key = 0; + void *value; + + value = bpf_map_lookup_elem(&probe_read_map, &key); + if (!value) + return 0; + + if (bpf_dynptr_from_mem(value, 32, 0, &ptr)) + return 0; + + return bpf_probe_read_user_str_dynptr(&ptr, 0, 8, value); +} + +SEC("?socket") +int test_probe_read_kernel_str_dynptr_cap(struct __sk_buff *skb) +{ + struct bpf_dynptr ptr; + __u32 key = 0; + void *value; + + value = bpf_map_lookup_elem(&probe_read_map, &key); + if (!value) + return 0; + + if (bpf_dynptr_from_mem(value, 32, 0, &ptr)) + return 0; + + return bpf_probe_read_kernel_str_dynptr(&ptr, 0, 8, value); +} + SEC("fentry.s/" SYS_PREFIX "sys_nanosleep") int test_copy_from_user_dynptr(void *ctx) { -- 2.34.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH bpf 2/2] selftests/bpf: Cover dynptr probe-read kfunc capability gate 2026-06-15 8:31 ` [PATCH bpf 2/2] selftests/bpf: Cover dynptr probe-read kfunc capability gate Nuoqi Gui @ 2026-06-15 8:41 ` sashiko-bot 2026-06-15 9:36 ` Nuoqi Gui 0 siblings, 1 reply; 7+ messages in thread From: sashiko-bot @ 2026-06-15 8:41 UTC (permalink / raw) To: Nuoqi Gui; +Cc: bpf Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] The commit message claims to declare explicit kfunc prototypes locally in `dynptr_success.c`, but the patch fails to include these declarations. -- commit d3deda1bfd50e0af66e0dced005423edd99c0d03 Author: Nuoqi Gui <gnq25@mails.tsinghua.edu.cn> selftests/bpf: Cover dynptr probe-read kfunc capability gate This commit adds selftest programs to verify that the nofault probe-read dynptr kfuncs fail with -EACCES when called without CAP_PERFMON and CAP_SYS_ADMIN. It tests the policy boundary for these kfuncs using capabilities. > Add focused dynptr selftest programs that load socket-filter programs using > bpf_dynptr_from_mem() followed by each nofault probe-read dynptr kfunc: > bpf_probe_read_user_dynptr(), bpf_probe_read_kernel_dynptr(), > bpf_probe_read_user_str_dynptr(), and bpf_probe_read_kernel_str_dynptr(). > Declare the dynptr kfuncs used by this BPF object locally in > dynptr_success.c so the dynptr BPF object builds with explicit prototypes. [Severity: Medium] Is this description accurate for the included changes? The commit message mentions adding explicit local declarations for the dynptr kfuncs in dynptr_success.c, but these declarations do not appear to be included in the code. Were they accidentally omitted from this patch, or is the commit message outdated? -- Sashiko AI review · https://sashiko.dev/#/patchset/20260615-f01-07-dynptr-probe-read-cap-v1-0-e626cd61a381@mails.tsinghua.edu.cn?part=2 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Re: [PATCH bpf 2/2] selftests/bpf: Cover dynptr probe-read kfunc capability gate 2026-06-15 8:41 ` sashiko-bot @ 2026-06-15 9:36 ` Nuoqi Gui 0 siblings, 0 replies; 7+ messages in thread From: Nuoqi Gui @ 2026-06-15 9:36 UTC (permalink / raw) To: sashiko-reviews; +Cc: bpf > -----Original Messages----- > From: sashiko-bot@kernel.org > Send time:Monday, 15/06/2026 16:41:55 > To: "Nuoqi Gui" <gnq25@mails.tsinghua.edu.cn> > Cc: bpf@vger.kernel.org > Subject: Re: [PATCH bpf 2/2] selftests/bpf: Cover dynptr probe-read kfunc capability gate > > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > - [Medium] The commit message claims to declare explicit kfunc prototypes locally in `dynptr_success.c`, but the patch fails to include these declarations. > -- > > commit d3deda1bfd50e0af66e0dced005423edd99c0d03 > Author: Nuoqi Gui <gnq25@mails.tsinghua.edu.cn> > > selftests/bpf: Cover dynptr probe-read kfunc capability gate > > This commit adds selftest programs to verify that the nofault probe-read > dynptr kfuncs fail with -EACCES when called without CAP_PERFMON and > CAP_SYS_ADMIN. It tests the policy boundary for these kfuncs using > capabilities. > > > Add focused dynptr selftest programs that load socket-filter programs using > > bpf_dynptr_from_mem() followed by each nofault probe-read dynptr kfunc: > > bpf_probe_read_user_dynptr(), bpf_probe_read_kernel_dynptr(), > > bpf_probe_read_user_str_dynptr(), and bpf_probe_read_kernel_str_dynptr(). > > Declare the dynptr kfuncs used by this BPF object locally in > > dynptr_success.c so the dynptr BPF object builds with explicit prototypes. > > [Severity: Medium] > Is this description accurate for the included changes? > > The commit message mentions adding explicit local declarations for the dynptr > kfuncs in dynptr_success.c, but these declarations do not appear to be > included in the code. Were they accidentally omitted from this patch, or > is the commit message outdated? > > -- > Sashiko AI review · https://sashiko.dev/#/patchset/20260615-f01-07-dynptr-probe-read-cap-v1-0-e626cd61a381@mails.tsinghua.edu.cn?part=2 This sentence is stale from an earlier version of the patch. The current patch no longer adds local declarations in dynptr_success.c, so I'll drop that sentence from the commit message. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH bpf 0/2] bpf: Gate dynptr probe-read kfuncs like helpers 2026-06-15 8:31 [PATCH bpf 0/2] bpf: Gate dynptr probe-read kfuncs like helpers Nuoqi Gui 2026-06-15 8:31 ` [PATCH bpf 1/2] " Nuoqi Gui 2026-06-15 8:31 ` [PATCH bpf 2/2] selftests/bpf: Cover dynptr probe-read kfunc capability gate Nuoqi Gui @ 2026-06-15 15:48 ` Alexei Starovoitov 2 siblings, 0 replies; 7+ messages in thread From: Alexei Starovoitov @ 2026-06-15 15:48 UTC (permalink / raw) To: Nuoqi Gui, Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Eduard Zingerman, Kumar Kartikeya Dwivedi Cc: Martin KaFai Lau, Mykyta Yatsenko, Shuah Khan, bpf, linux-kselftest, linux-kernel On Mon Jun 15, 2026 at 1:31 AM PDT, Nuoqi Gui wrote: > The dynptr probe-read kfuncs are registered as common kfuncs. That lets a > program with the generic kfunc privilege gate call > bpf_probe_read_kernel_dynptr(), while the legacy bpf_probe_read_kernel() > helper is exposed only with CAP_PERFMON and is blocked by kernel-read > lockdown. It's fine as-is. Won't fix. pw-bot: cr ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-06-15 15:48 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-06-15 8:31 [PATCH bpf 0/2] bpf: Gate dynptr probe-read kfuncs like helpers Nuoqi Gui 2026-06-15 8:31 ` [PATCH bpf 1/2] " Nuoqi Gui 2026-06-15 8:55 ` sashiko-bot 2026-06-15 8:31 ` [PATCH bpf 2/2] selftests/bpf: Cover dynptr probe-read kfunc capability gate Nuoqi Gui 2026-06-15 8:41 ` sashiko-bot 2026-06-15 9:36 ` Nuoqi Gui 2026-06-15 15:48 ` [PATCH bpf 0/2] bpf: Gate dynptr probe-read kfuncs like helpers Alexei Starovoitov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox