mirror of
https://github.com/netdata/libbpf.git
synced 2026-04-09 18:19:06 +08:00
bpf: Add flags arg to bpf_dynptr_read and bpf_dynptr_write APIs
Commit 13bbbfbea759 ("bpf: Add bpf_dynptr_read and bpf_dynptr_write")
added the bpf_dynptr_write() and bpf_dynptr_read() APIs.
However, it will be needed for some dynptr types to pass in flags as
well (e.g. when writing to a skb, the user may like to invalidate the
hash or recompute the checksum).
This patch adds a "u64 flags" arg to the bpf_dynptr_read() and
bpf_dynptr_write() APIs before their UAPI signature freezes where
we then cannot change them anymore with a 5.19.x released kernel.
Fixes: 13bbbfbea759 ("bpf: Add bpf_dynptr_read and bpf_dynptr_write")
Signed-off-by: Joanne Koong <joannelkoong@gmail.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/r/20220706232547.4016651-1-joannelkoong@gmail.com
This commit is contained in:
committed by
Andrii Nakryiko
parent
ca60209447
commit
6d5026e434
@@ -5226,22 +5226,25 @@ union bpf_attr {
|
|||||||
* Return
|
* Return
|
||||||
* Nothing. Always succeeds.
|
* Nothing. Always succeeds.
|
||||||
*
|
*
|
||||||
* long bpf_dynptr_read(void *dst, u32 len, struct bpf_dynptr *src, u32 offset)
|
* long bpf_dynptr_read(void *dst, u32 len, struct bpf_dynptr *src, u32 offset, u64 flags)
|
||||||
* Description
|
* Description
|
||||||
* Read *len* bytes from *src* into *dst*, starting from *offset*
|
* Read *len* bytes from *src* into *dst*, starting from *offset*
|
||||||
* into *src*.
|
* into *src*.
|
||||||
|
* *flags* is currently unused.
|
||||||
* Return
|
* Return
|
||||||
* 0 on success, -E2BIG if *offset* + *len* exceeds the length
|
* 0 on success, -E2BIG if *offset* + *len* exceeds the length
|
||||||
* of *src*'s data, -EINVAL if *src* is an invalid dynptr.
|
* of *src*'s data, -EINVAL if *src* is an invalid dynptr or if
|
||||||
|
* *flags* is not 0.
|
||||||
*
|
*
|
||||||
* long bpf_dynptr_write(struct bpf_dynptr *dst, u32 offset, void *src, u32 len)
|
* long bpf_dynptr_write(struct bpf_dynptr *dst, u32 offset, void *src, u32 len, u64 flags)
|
||||||
* Description
|
* Description
|
||||||
* Write *len* bytes from *src* into *dst*, starting from *offset*
|
* Write *len* bytes from *src* into *dst*, starting from *offset*
|
||||||
* into *dst*.
|
* into *dst*.
|
||||||
|
* *flags* is currently unused.
|
||||||
* Return
|
* Return
|
||||||
* 0 on success, -E2BIG if *offset* + *len* exceeds the length
|
* 0 on success, -E2BIG if *offset* + *len* exceeds the length
|
||||||
* of *dst*'s data, -EINVAL if *dst* is an invalid dynptr or if *dst*
|
* of *dst*'s data, -EINVAL if *dst* is an invalid dynptr or if *dst*
|
||||||
* is a read-only dynptr.
|
* is a read-only dynptr or if *flags* is not 0.
|
||||||
*
|
*
|
||||||
* void *bpf_dynptr_data(struct bpf_dynptr *ptr, u32 offset, u32 len)
|
* void *bpf_dynptr_data(struct bpf_dynptr *ptr, u32 offset, u32 len)
|
||||||
* Description
|
* Description
|
||||||
|
|||||||
Reference in New Issue
Block a user