aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/bpf
diff options
context:
space:
mode:
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>2022-09-06 17:13:02 +0200
committerAlexei Starovoitov <ast@kernel.org>2022-09-07 11:05:17 -0700
commiteb1f7f71c126c8fd50ea81af98f97c4b581ea4ae (patch)
tree8eec02763efd316fb6daf76680acbc9bc72cf2e0 /tools/testing/selftests/bpf
parentbpf/btf: bump BTF_KFUNC_SET_MAX_CNT (diff)
downloadlinux-dev-eb1f7f71c126c8fd50ea81af98f97c4b581ea4ae.tar.xz
linux-dev-eb1f7f71c126c8fd50ea81af98f97c4b581ea4ae.zip
bpf/verifier: allow kfunc to return an allocated mem
For drivers (outside of network), the incoming data is not statically defined in a struct. Most of the time the data buffer is kzalloc-ed and thus we can not rely on eBPF and BTF to explore the data. This commit allows to return an arbitrary memory, previously allocated by the driver. An interesting extra point is that the kfunc can mark the exported memory region as read only or read/write. So, when a kfunc is not returning a pointer to a struct but to a plain type, we can consider it is a valid allocated memory assuming that: - one of the arguments is either called rdonly_buf_size or rdwr_buf_size - and this argument is a const from the caller point of view We can then use this parameter as the size of the allocated memory. The memory is either read-only or read-write based on the name of the size parameter. Acked-by: Kumar Kartikeya Dwivedi <memxor@gmail.com> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Link: https://lore.kernel.org/r/20220906151303.2780789-7-benjamin.tissoires@redhat.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/testing/selftests/bpf')
0 files changed, 0 insertions, 0 deletions