Re: [PATCH v2] module: keep percpu symbols in module's symtab

From: Rusty Russell
Date: Wed Nov 25 2015 - 22:05:26 EST


Miroslav Benes <mbenes@xxxxxxx> writes:
> Currently, percpu symbols from .data..percpu ELF section of a module are
> not copied over and stored in final symtab array of struct module.
> Consequently such symbol cannot be returned via kallsyms API (for
> example kallsyms_lookup_name). This can be especially confusing when the
> percpu symbol is exported. Only its __ksymtab et al. are present in its
> symtab.
>
> The culprit is in layout_and_allocate() function where SHF_ALLOC flag is
> dropped for .data..percpu section. There is in fact no need to copy the
> section to final struct module, because kernel module loader allocates
> extra percpu section by itself. Unfortunately only symbols from
> SHF_ALLOC sections are copied due to a check in is_core_symbol().
>
> The patch changes is_core_symbol() function to copy over also percpu
> symbols (their st_shndx points to .data..percpu ELF section). We do it
> only if CONFIG_KALLSYMS_ALL is set to be consistent with the rest of the
> function (ELF section is SHF_ALLOC but !SHF_EXECINSTR). Finally
> elf_type() returns type 'a' for a percpu symbol because its address is
> absolute.
>
> Signed-off-by: Miroslav Benes <mbenes@xxxxxxx>

Thanks, applied!

Cheers,
Rusty.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/