From: Mykyta Yatsenko <yatsenko@xxxxxxxx> This patch adds new kfuncs that enable reading variable-length user or kernel data directly into dynptrs. These kfuncs provide a way to perform dynamically-sized reads while maintaining memory safety. Unlike existing `bpf_probe_read_{user|kernel}` APIs, which are limited to constant-sized reads, these new kfuncs allow for more flexible data access. v4 -> v5 * Fix pointers annotations, use __user where necessary, cast where needed v3 -> v4 * Added pid filtering in selftests v2 -> v3 * Add KF_TRUSTED_ARGS for kfuncs that take pointer to task_struct as an argument * Remove checks for non-NULL task, where it was not necessary * Added comments on constants used in selftests, etc. v1 -> v2 * Renaming helper functions to use "user_str" instead of "user_data_str" suffix Mykyta Yatsenko (3): helpers: make few bpf helpers public bpf: implement dynptr copy kfuncs selftests/bpf: introduce tests for dynptr copy kfuncs include/linux/bpf.h | 14 ++ kernel/bpf/helpers.c | 22 +- kernel/trace/bpf_trace.c | 193 +++++++++++++++ tools/testing/selftests/bpf/DENYLIST | 1 + .../testing/selftests/bpf/prog_tests/dynptr.c | 13 + .../selftests/bpf/progs/dynptr_success.c | 230 ++++++++++++++++++ 6 files changed, 461 insertions(+), 12 deletions(-) -- 2.49.0