Messages in this thread | | | From | Rusty Russell <> | Subject | Re: [PATCH v2] module: keep percpu symbols in module's symtab | Date | Thu, 26 Nov 2015 13:19:07 +1030 |
| |
Miroslav Benes <mbenes@suse.cz> 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@suse.cz>
Thanks, applied!
Cheers, Rusty.
| |