Hi, Tiezhu,
On Mon, Aug 10, 2026 at 10:07 AM Tiezhu Yang <[email protected]> wrote:
>
> On 2026/8/8 上午11:37, Tiezhu Yang wrote:
> > The compiler toolchains generate internal local labels on certain
> > architectures (such as LoongArch) for optimizations and relocations.
>
> ...
>
> > Signed-off-by: Tiezhu Yang <[email protected]>
> > ---
> > Based on the latest modules-next branch of
> > https://git.kernel.org/pub/scm/linux/kernel/git/modules/linux.git
> >
> > kernel/module/kallsyms.c | 7 +++++++
> > 1 file changed, 7 insertions(+)
> >
> > diff --git a/kernel/module/kallsyms.c b/kernel/module/kallsyms.c
> > index f23126d804b2..61dd5c014a59 100644
> > --- a/kernel/module/kallsyms.c
> > +++ b/kernel/module/kallsyms.c
> > @@ -130,6 +130,9 @@ void layout_symtab(struct module *mod, struct load_info
> > *info)
> >
> > /* Compute total space required for the core symbols' strtab. */
> > for (ndst = i = 0; i < nsrc; i++) {
> > + if (is_mapping_symbol(&info->strtab[src[i].st_name]))
> > + continue;
> > +
> > if (i == 0 || is_livepatch_module(mod) ||
> > is_core_symbol(src + i, info->sechdrs, info->hdr->e_shnum,
> > info->index.pcpu)) {
> > @@ -198,6 +201,10 @@ void add_kallsyms(struct module *mod, const struct
> > load_info *info)
> > src = kallsyms->symtab;
> > for (ndst = i = 0; i < kallsyms->num_symtab; i++) {
> > kallsyms->typetab[i] = elf_type(src + i, info);
> > +
> > + if (is_mapping_symbol(&kallsyms->strtab[src[i].st_name]))
> > + continue;
> > +
> > if (i == 0 || is_livepatch_module(mod) ||
> > is_core_symbol(src + i, info->sechdrs, info->hdr->e_shnum,
> > info->index.pcpu)) {
> >
>
> Hi module maintainers,
>
> Regarding the feedback from the AI bot about livepatch breaking [1],
> there are two ways to fix it, which style do you prefer?
I think the first is better.
Huacai
>
> (1) Using continue
>
> ```
> diff --git a/kernel/module/kallsyms.c b/kernel/module/kallsyms.c
> index f23126d804b2..aece7aa49dd4 100644
> --- a/kernel/module/kallsyms.c
> +++ b/kernel/module/kallsyms.c
> @@ -130,6 +130,10 @@ void layout_symtab(struct module *mod, struct
> load_info *info)
>
> /* Compute total space required for the core symbols' strtab. */
> for (ndst = i = 0; i < nsrc; i++) {
> + if (!is_livepatch_module(mod) &&
> + is_mapping_symbol(&info->strtab[src[i].st_name]))
> + continue;
> +
> if (i == 0 || is_livepatch_module(mod) ||
> is_core_symbol(src + i, info->sechdrs,
> info->hdr->e_shnum,
> info->index.pcpu)) {
> @@ -198,6 +202,11 @@ void add_kallsyms(struct module *mod, const struct
> load_info *info)
> src = kallsyms->symtab;
> for (ndst = i = 0; i < kallsyms->num_symtab; i++) {
> kallsyms->typetab[i] = elf_type(src + i, info);
> +
> + if (!is_livepatch_module(mod) &&
> + is_mapping_symbol(&kallsyms->strtab[src[i].st_name]))
> + continue;
> +
> if (i == 0 || is_livepatch_module(mod) ||
> is_core_symbol(src + i, info->sechdrs,
> info->hdr->e_shnum,
> info->index.pcpu)) {
> ```
>
> (2) Using if-statement
> ```
> diff --git a/kernel/module/kallsyms.c b/kernel/module/kallsyms.c
> index f23126d804b2..b2b22b3487a8 100644
> --- a/kernel/module/kallsyms.c
> +++ b/kernel/module/kallsyms.c
> @@ -130,9 +130,12 @@ void layout_symtab(struct module *mod, struct
> load_info *info)
>
> /* Compute total space required for the core symbols' strtab. */
> for (ndst = i = 0; i < nsrc; i++) {
> - if (i == 0 || is_livepatch_module(mod) ||
> + bool is_mapping = !is_livepatch_module(mod) &&
> +
> is_mapping_symbol(&info->strtab[src[i].st_name]);
> +
> + if (!is_mapping && (i == 0 || is_livepatch_module(mod) ||
> is_core_symbol(src + i, info->sechdrs,
> info->hdr->e_shnum,
> - info->index.pcpu)) {
> + info->index.pcpu))) {
> strtab_size +=
> strlen(&info->strtab[src[i].st_name]) + 1;
> ndst++;
> }
> @@ -198,9 +201,13 @@ void add_kallsyms(struct module *mod, const struct
> load_info *info)
> src = kallsyms->symtab;
> for (ndst = i = 0; i < kallsyms->num_symtab; i++) {
> kallsyms->typetab[i] = elf_type(src + i, info);
> - if (i == 0 || is_livepatch_module(mod) ||
> +
> + bool is_mapping = !is_livepatch_module(mod) &&
> +
> is_mapping_symbol(&kallsyms->strtab[src[i].st_name]);
> +
> + if (!is_mapping && (i == 0 || is_livepatch_module(mod) ||
> is_core_symbol(src + i, info->sechdrs,
> info->hdr->e_shnum,
> - info->index.pcpu)) {
> + info->index.pcpu))) {
> ssize_t ret;
>
> mod->core_kallsyms.typetab[ndst] =
> ```
>
> If you have any more comments, please let me know.
>
> [1]
> https://lore.kernel.org/linux-modules/[email protected]/
>
> Thanks,
> Tiezhu
>
>