Commit 07c428ec authored by D. Wythe's avatar D. Wythe Committed by Martin KaFai Lau
Browse files

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: default avatarD. Wythe <alibuda@linux.alibaba.com>
Signed-off-by: default avatarMartin KaFai Lau <martin.lau@kernel.org>
Link: https://patch.msgid.link/20251107035632.115950-2-alibuda@linux.alibaba.com
parent abd0c0f6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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)
{
+1 −0
Original line number Diff line number Diff line
@@ -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,