From: Joe Burton <jevburton@xxxxxxxxxx> These helpers invoke tracing programs attached to a given map. Signed-off-by: Joe Burton <jevburton@xxxxxxxxxx> --- include/linux/bpf.h | 2 ++ kernel/bpf/helpers.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/include/linux/bpf.h b/include/linux/bpf.h index 73f4524c1c29..847501a69012 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -2148,6 +2148,8 @@ extern const struct bpf_func_proto bpf_for_each_map_elem_proto; extern const struct bpf_func_proto bpf_btf_find_by_name_kind_proto; extern const struct bpf_func_proto bpf_sk_setsockopt_proto; extern const struct bpf_func_proto bpf_sk_getsockopt_proto; +extern const struct bpf_func_proto bpf_map_trace_update_elem_proto; +extern const struct bpf_func_proto bpf_map_trace_delete_elem_proto; const struct bpf_func_proto *tracing_prog_func_proto( enum bpf_func_id func_id, const struct bpf_prog *prog); diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c index 1ffd469c217f..f6ebc519334a 100644 --- a/kernel/bpf/helpers.c +++ b/kernel/bpf/helpers.c @@ -1328,6 +1328,35 @@ void bpf_timer_cancel_and_free(void *val) kfree(t); } +BPF_CALL_4(bpf_map_trace_update_elem, struct bpf_map *, map, + void *, key, void *, value, u64, flags) +{ + bpf_trace_map_update_elem(map, key, value, flags); + return 0; +} + +const struct bpf_func_proto bpf_map_trace_update_elem_proto = { + .func = bpf_map_trace_update_elem, + .ret_type = RET_VOID, + .arg1_type = ARG_CONST_MAP_PTR, + .arg2_type = ARG_PTR_TO_MAP_KEY, + .arg3_type = ARG_PTR_TO_MAP_VALUE, + .arg4_type = ARG_ANYTHING, +}; + +BPF_CALL_2(bpf_map_trace_delete_elem, struct bpf_map *, map, void *, key) +{ + bpf_trace_map_delete_elem(map, key); + return 0; +} + +const struct bpf_func_proto bpf_map_trace_delete_elem_proto = { + .func = bpf_map_trace_delete_elem, + .ret_type = RET_VOID, + .arg1_type = ARG_CONST_MAP_PTR, + .arg2_type = ARG_PTR_TO_MAP_KEY, +}; + const struct bpf_func_proto bpf_get_current_task_proto __weak; const struct bpf_func_proto bpf_get_current_task_btf_proto __weak; const struct bpf_func_proto bpf_probe_read_user_proto __weak; -- 2.33.0.685.g46640cef36-goog