Commit b0004a82 authored by Alexei Starovoitov's avatar Alexei Starovoitov
Browse files

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: default avatarAlexei Starovoitov <ast@kernel.org>
parents 042d4c06 83dd46ec
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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)
{
+3 −3
Original line number Diff line number Diff line
@@ -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();