Joanne Koong b5964b968a bpf: Add skb dynptrs
Add skb dynptrs, which are dynptrs whose underlying pointer points
to a skb. The dynptr acts on skb data. skb dynptrs have two main
benefits. One is that they allow operations on sizes that are not
statically known at compile-time (eg variable-sized accesses).
Another is that parsing the packet data through dynptrs (instead of
through direct access of skb->data and skb->data_end) can be more
ergonomic and less brittle (eg does not need manual if checking for
being within bounds of data_end).

For bpf prog types that don't support writes on skb data, the dynptr is
read-only (bpf_dynptr_write() will return an error)

For reads and writes through the bpf_dynptr_read() and bpf_dynptr_write()
interfaces, reading and writing from/to data in the head as well as from/to
non-linear paged buffers is supported. Data slices through the
bpf_dynptr_data API are not supported; instead bpf_dynptr_slice() and
bpf_dynptr_slice_rdwr() (added in subsequent commit) should be used.

For examples of how skb dynptrs can be used, please see the attached
selftests.

Signed-off-by: Joanne Koong <joannelkoong@gmail.com>
Link: https://lore.kernel.org/r/20230301154953.641654-8-joannelkoong@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2023-03-01 09:55:24 -08:00
..
2023-03-01 09:55:24 -08:00
2023-02-21 18:24:12 -08:00
2022-12-02 11:25:00 +01:00
2022-12-21 14:31:52 -08:00
2023-02-21 10:03:48 -08:00
2023-02-21 10:45:51 -08:00
2023-01-28 00:00:14 -08:00
2023-01-31 15:01:20 +01:00
2023-02-21 18:24:12 -08:00
2023-02-21 18:24:12 -08:00
2022-08-29 19:47:03 -04:00
2022-01-11 13:08:21 -08:00
\n
2023-02-20 12:38:27 -08:00
2022-09-26 10:13:13 -07:00
2023-02-21 15:27:48 -08:00
2023-02-20 17:41:08 -08:00
2022-11-15 00:42:02 -08:00
2022-12-23 12:00:24 -08:00
2023-02-02 16:26:06 -08:00
2022-12-19 12:33:32 -06:00
2022-12-16 03:54:54 -08:00
2022-06-29 13:07:16 +02:00
2022-12-27 12:52:10 +01:00
2022-12-16 03:54:54 -08:00
2022-10-10 12:49:34 -07:00
2022-02-25 09:36:06 +01:00
2022-12-13 19:29:45 -08:00
2022-08-06 16:38:17 -07:00