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
>
>

Reply via email to