mirror of https://github.com/torvalds/linux.git
bpf: Export necessary symbols for modules with struct_ops
Exports three necessary symbols for implementing struct_ops with tristate subsystem. To hold or release refcnt of struct_ops refcnt by inline funcs bpf_try_module_get and bpf_module_put which use bpf_struct_ops_get(put) conditionally. And to copy obj name from one to the other with effective checks by bpf_obj_name_cpy. Signed-off-by: D. Wythe <alibuda@linux.alibaba.com> Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org> Link: https://patch.msgid.link/20251107035632.115950-2-alibuda@linux.alibaba.com
This commit is contained in:
parent
abd0c0f6aa
commit
07c428ece3
|
|
@ -1162,6 +1162,7 @@ bool bpf_struct_ops_get(const void *kdata)
|
|||
map = __bpf_map_inc_not_zero(&st_map->map, false);
|
||||
return !IS_ERR(map);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bpf_struct_ops_get);
|
||||
|
||||
void bpf_struct_ops_put(const void *kdata)
|
||||
{
|
||||
|
|
@ -1173,6 +1174,7 @@ void bpf_struct_ops_put(const void *kdata)
|
|||
|
||||
bpf_map_put(&st_map->map);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bpf_struct_ops_put);
|
||||
|
||||
u32 bpf_struct_ops_id(const void *kdata)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1234,6 +1234,7 @@ int bpf_obj_name_cpy(char *dst, const char *src, unsigned int size)
|
|||
|
||||
return src - orig_src;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bpf_obj_name_cpy);
|
||||
|
||||
int map_check_no_btf(const struct bpf_map *map,
|
||||
const struct btf *btf,
|
||||
|
|
|
|||
Loading…
Reference in New Issue