Add kernel symbol for struct_ops trampoline. Without kernel symbol for struct_ops trampoline, the unwinder may produce unexpected stacktraces. For example, the x86 ORC and FP unwinder stops stacktrace on a struct_ops trampoline address since there is no kernel symbol for the address. v4: - Add a separate cleanup patch to remove unused member rcu from bpf_struct_ops_map (patch 1) - Use funcs_cnt instead of btf_type_vlen(vt) for links memory calculation in .map_mem_usage (patch 2) - Include ksyms[] memory in map_mem_usage (patch 3) - Various fixes in patch 3 (Thanks to Martin) v3: https://lore.kernel.org/bpf/20241111121641.2679885-1-xukuohai@xxxxxxxxxxxxxxx/ - Add a separate cleanup patch to replace links_cnt with funcs_cnt - Allocate ksyms on-demand in update_elem() to stay with the links allocation way - Set ksym name to prog__<struct_ops_name>_<member_name> v2: https://lore.kernel.org/bpf/20241101111948.1570547-1-xukuohai@xxxxxxxxxxxxxxx/ - Refine the commit message for clarity and fix a test bot warning v1: https://lore.kernel.org/bpf/20241030111533.907289-1-xukuohai@xxxxxxxxxxxxxxx/ Xu Kuohai (3): bpf: Remove unused member rcu from bpf_struct_ops_map bpf: Use function pointers count as struct_ops links count bpf: Add kernel symbol for struct_ops trampoline include/linux/bpf.h | 3 +- kernel/bpf/bpf_struct_ops.c | 115 ++++++++++++++++++++++++++++++++---- kernel/bpf/dispatcher.c | 3 +- kernel/bpf/trampoline.c | 9 ++- 4 files changed, 114 insertions(+), 16 deletions(-) -- 2.39.5