Messages in this thread | | | From | Michael Ellerman <> | Subject | Re: [PATCH] kallsyms: optimize kallsyms_lookup_name() for a few cases | Date | Wed, 26 Apr 2017 20:44:59 +1000 |
| |
"Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> writes: > diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c > index 6a3b249a2ae1..d134b060564f 100644 > --- a/kernel/kallsyms.c > +++ b/kernel/kallsyms.c > @@ -205,6 +205,12 @@ unsigned long kallsyms_lookup_name(const char *name) > unsigned long i; > unsigned int off; > > + if (!name || *name == '\0') > + return false; > + > + if (strnchr(name, MODULE_NAME_LEN, ':')) > + return module_kallsyms_lookup_name(name); > + > for (i = 0, off = 0; i < kallsyms_num_syms; i++) { > off = kallsyms_expand_symbol(off, namebuf, ARRAY_SIZE(namebuf)); ... } return module_kallsyms_lookup_name(name);
Is the rest of the context.
Which looks a bit odd, we already did module lookup previously?
But it's correct, because you can lookup a symbol in a module without a module prefix, it just looks in every module.
You could invert the logic, ie. check that there isn't a ":" in the name and only in that case do the for loop, always falling back to module lookup.
Or just add a comment explaining why we call module lookup in two places.
cheers
| |