Miroslav Benes <[email protected]> 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 <[email protected]>
Thanks, applied! Cheers, Rusty. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

