mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-25 00:52:45 -04:00
bpf: Introduce internal definitions for UAPI-opaque bpf_{rb,list}_node
Structs bpf_rb_node and bpf_list_node are opaquely defined in
uapi/linux/bpf.h, as BPF program writers are not expected to touch their
fields - nor does the verifier allow them to do so.
Currently these structs are simple wrappers around structs rb_node and
list_head and linked_list / rbtree implementation just casts and passes
to library functions for those data structures. Later patches in this
series, though, will add an "owner" field to bpf_{rb,list}_node, such
that they're not just wrapping an underlying node type. Moreover, the
bpf linked_list and rbtree implementations will deal with these owner
pointers directly in a few different places.
To avoid having to do
void *owner = (void*)bpf_list_node + sizeof(struct list_head)
with opaque UAPI node types, add bpf_{list,rb}_node_kern struct
definitions to internal headers and modify linked_list and rbtree to use
the internal types where appropriate.
Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com>
Link: https://lore.kernel.org/r/20230718083813.3416104-3-davemarchevsky@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Alexei Starovoitov
parent
60cc1f7d06
commit
0a1f7bfe35
@@ -228,6 +228,16 @@ struct btf_record {
|
||||
struct btf_field fields[];
|
||||
};
|
||||
|
||||
/* Non-opaque version of bpf_rb_node in uapi/linux/bpf.h */
|
||||
struct bpf_rb_node_kern {
|
||||
struct rb_node rb_node;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
/* Non-opaque version of bpf_list_node in uapi/linux/bpf.h */
|
||||
struct bpf_list_node_kern {
|
||||
struct list_head list_head;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_map {
|
||||
/* The first two cachelines with read-mostly members of which some
|
||||
* are also accessed in fast-path (e.g. ops, max_entries).
|
||||
|
||||
Reference in New Issue
Block a user