Re: [PATCH v2] module/kallsyms: Filter out local mapping symbols during module load

Tiezhu Yang <[email protected]>
Newsgroups dev.linux.lists.loongarch,org.kernel.vger.linux-kernel,org.kernel.vger.linux-modules
Message-ID <[email protected]>
On 2026/8/11 下午10:22, Huacai Chen wrote:
> Hi, Petr,
> 
> On Tue, Aug 11, 2026 at 8:20 PM Petr Pavlu <[email protected]> wrote:
>>
>> On 8/11/26 9:15 AM, Tiezhu Yang wrote:
>>> The compiler toolchains generate internal local labels on certain
>>> architectures (such as LoongArch) for optimizations and relocations.
>>>
>>> While these local labels are filtered out during runtime lookups in
>>> find_kallsyms_symbol(), they still leak into the permanent symbol
>>> tables of loaded modules, because layout_symtab() and add_kallsyms()
>>> do not check for the mapping symbols during layout generation.
>>>
>>> Consequently, tracing tools like bpftrace resolve identical addresses
>>> into confusing local labels instead of actual clear C function names.
>>>
>>> Fix this by adding is_mapping_symbol() checks directly into the symbol
>>> tracking loops of layout_symtab() and add_kallsyms(). This prevents the
>>> mapping symbols from entering the module's memory symbol arrays at load
>>> time.
>>
>> This optimization looks sensible to me. Kallsyms in vmlinux also
>> normally doesn't include information about local labels (.L<xyz>) and
>> mapping symbols ($a, $d, ...), so it should be ok not to track them in
>> modules either.
>>
>> Note that the patch description mixes up these two symbol categories,
>> presumably because the existing is_mapping_symbol() function conflates
>> them as well.

...

>> It is better to avoid duplicating the same logic in layout_symtab() and
>> add_kallsyms(). The function is_core_symbol() can be renamed to
>> something like is_kept_symbol() and can be solely responsible for
>> deciding what to keep.
> I'm sorry but I think Tiezhu's patch is simpler and cleaner. :)

Hi Petr and Huacai,

Thanks for your feedback! To make the code cleaner, I plan to split the
changes into the following three patches for v3:

1. module/kallsyms: Rename is_mapping_symbol() to is_local_mapping_symbol()
2. module/kallsyms: Refactor current symbol filtering into is_kept_symbol()
3. module/kallsyms: Filter out local and mapping symbols during module load

I will send out the v3 patch series soon.

Thanks,
Tiezhu
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.