On 2023/6/16 13:01, Song Liu wrote: > > >> On Jun 15, 2023, at 7:19 PM, Leizhen (ThunderTown) <thunder.leizhen@xxxxxxxxxx> wrote: >> >> On 2023/6/16 1:00, Song Liu wrote: >>> With CONFIG_LTO_CLANG, kallsyms.c:cleanup_symbol_name() removes symbols >>> suffixes during comparison. This is problematic for livepatch, as >>> kallsyms_on_each_match_symbol may find multiple matches for the same >>> symbol, and fail with: >>> >>> livepatch: unresolvable ambiguity for symbol 'xxx' in object 'yyy' >> >> Did you forget to specify 'old_sympos'? When there are multiple symbols with >> the same name, we need to specify the sequence number of the symbols to be >> matched. > > > old_sympos is indeed 0 here. However, the issue with CONFIG_LTO_CLANG > is different. Here is an example: > > $ grep bpf_verifier_vlog /proc/kallsyms > ffffffff81549f60 t bpf_verifier_vlog > ffffffff8268b430 d bpf_verifier_vlog._entry > ffffffff8282a958 d bpf_verifier_vlog._entry_ptr > ffffffff82e12a1f d bpf_verifier_vlog.__already_done > > kallsyms_on_each_match_symbol matches "bpf_verifier_vlog" to all of > these because of cleanup_symbol_name(). IOW, we only have one > function called bpf_verifier_vlog, but kallsyms_on_each_match_symbol() > matches it to bpf_verifier_vlog.*. > > Does this make sense? Sorry. I mistakenly thought you were operating a static function. These suffixes are not mentioned in the comments in the function cleanup_symbol_name(). So I didn't notice it. > > Thanks, > Song > > > . > -- Regards, Zhen Lei