diff options
| author | Alexei Starovoitov <ast@kernel.org> | 2025-12-23 09:23:38 +0300 |
|---|---|---|
| committer | Alexei Starovoitov <ast@kernel.org> | 2025-12-23 09:23:39 +0300 |
| commit | b0004a82239212b4a6ed210c29dcbb4149769c81 (patch) | |
| tree | 60efe9977cc964a912c78bb9c68f72b34dd00caa | |
| parent | 042d4c0642b35facee87628a61d81cc77debbc41 (diff) | |
| parent | 83dd46ecb68ecc03cff23e68490ded5d40d79f66 (diff) | |
| download | linux-b0004a82239212b4a6ed210c29dcbb4149769c81.tar.xz | |
Merge branch 'allow-calling-kfuncs-from-raw_tp-programs'
Puranjay Mohan says:
====================
Allow calling kfuncs from raw_tp programs
V1: https://lore.kernel.org/all/20251218145514.339819-1-puranjay@kernel.org/
Changes in V1->V2:
- Update selftests to allow success for raw_tp programs calling kfuncs.
This set enables calling kfuncs from raw_tp programs.
====================
Link: https://patch.msgid.link/20251222133250.1890587-1-puranjay@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
| -rw-r--r-- | kernel/bpf/btf.c | 1 | ||||
| -rw-r--r-- | tools/testing/selftests/bpf/progs/dynptr_fail.c | 2 | ||||
| -rw-r--r-- | tools/testing/selftests/bpf/progs/verifier_kfunc_prog_types.c | 6 |
3 files changed, 5 insertions, 4 deletions
diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index 0de8fc8a0e0b..539c9fdea41d 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -8681,6 +8681,7 @@ static int bpf_prog_type_to_kfunc_hook(enum bpf_prog_type prog_type) return BTF_KFUNC_HOOK_STRUCT_OPS; case BPF_PROG_TYPE_TRACING: case BPF_PROG_TYPE_TRACEPOINT: + case BPF_PROG_TYPE_RAW_TRACEPOINT: case BPF_PROG_TYPE_PERF_EVENT: case BPF_PROG_TYPE_LSM: return BTF_KFUNC_HOOK_TRACING; diff --git a/tools/testing/selftests/bpf/progs/dynptr_fail.c b/tools/testing/selftests/bpf/progs/dynptr_fail.c index dda6a8dada82..8f2ae9640886 100644 --- a/tools/testing/selftests/bpf/progs/dynptr_fail.c +++ b/tools/testing/selftests/bpf/progs/dynptr_fail.c @@ -1465,7 +1465,7 @@ int xdp_invalid_data_slice2(struct xdp_md *xdp) } /* Only supported prog type can create skb-type dynptrs */ -SEC("?raw_tp") +SEC("?xdp") __failure __msg("calling kernel function bpf_dynptr_from_skb is not allowed") int skb_invalid_ctx(void *ctx) { diff --git a/tools/testing/selftests/bpf/progs/verifier_kfunc_prog_types.c b/tools/testing/selftests/bpf/progs/verifier_kfunc_prog_types.c index a509cad97e69..1fce7a7e8d03 100644 --- a/tools/testing/selftests/bpf/progs/verifier_kfunc_prog_types.c +++ b/tools/testing/selftests/bpf/progs/verifier_kfunc_prog_types.c @@ -32,7 +32,7 @@ static void task_kfunc_load_test(void) } SEC("raw_tp") -__failure __msg("calling kernel function") +__success int BPF_PROG(task_kfunc_raw_tp) { task_kfunc_load_test(); @@ -86,7 +86,7 @@ static void cgrp_kfunc_load_test(void) } SEC("raw_tp") -__failure __msg("calling kernel function") +__success int BPF_PROG(cgrp_kfunc_raw_tp) { cgrp_kfunc_load_test(); @@ -138,7 +138,7 @@ static void cpumask_kfunc_load_test(void) } SEC("raw_tp") -__failure __msg("calling kernel function") +__success int BPF_PROG(cpumask_kfunc_raw_tp) { cpumask_kfunc_load_test(); |
