From: Rusty Russell [mailto:ru...@rustcorp.com.au] > >This trivial wrapper adds clarity and makes the following patch >smaller. > >Cc: sta...@kernel.org >Signed-off-by: Rusty Russell <ru...@rustcorp.com.au>
Looks good to me. Reviewed-by: Masami Hiramatsu <masami.hiramatsu...@hitachi.com> Thanks! >--- > kernel/module.c | 26 +++++++++++++++----------- > 1 file changed, 15 insertions(+), 11 deletions(-) > >diff --git a/kernel/module.c b/kernel/module.c >index 2149f7003e49..1e79d8157712 100644 >--- a/kernel/module.c >+++ b/kernel/module.c >@@ -3627,6 +3627,11 @@ static inline int is_arm_mapping_symbol(const char *str) > && (str[2] == '\0' || str[2] == '.'); > } > >+static const char *symname(struct module *mod, unsigned int symnum) >+{ >+ return mod->strtab + mod->symtab[symnum].st_name; >+} >+ > static const char *get_ksymbol(struct module *mod, > unsigned long addr, > unsigned long *size, >@@ -3649,15 +3654,15 @@ static const char *get_ksymbol(struct module *mod, > > /* We ignore unnamed symbols: they're uninformative > * and inserted at a whim. */ >+ if (*symname(mod, i) == '\0' >+ || is_arm_mapping_symbol(symname(mod, i))) >+ continue; >+ > if (mod->symtab[i].st_value <= addr >- && mod->symtab[i].st_value > mod->symtab[best].st_value >- && *(mod->strtab + mod->symtab[i].st_name) != '\0' >- && !is_arm_mapping_symbol(mod->strtab + >mod->symtab[i].st_name)) >+ && mod->symtab[i].st_value > mod->symtab[best].st_value) > best = i; > if (mod->symtab[i].st_value > addr >- && mod->symtab[i].st_value < nextval >- && *(mod->strtab + mod->symtab[i].st_name) != '\0' >- && !is_arm_mapping_symbol(mod->strtab + >mod->symtab[i].st_name)) >+ && mod->symtab[i].st_value < nextval) > nextval = mod->symtab[i].st_value; > } > >@@ -3668,7 +3673,7 @@ static const char *get_ksymbol(struct module *mod, > *size = nextval - mod->symtab[best].st_value; > if (offset) > *offset = addr - mod->symtab[best].st_value; >- return mod->strtab + mod->symtab[best].st_name; >+ return symname(mod, best); > } > > /* For kallsyms to ask for address resolution. NULL means not found. Careful >@@ -3763,8 +3768,7 @@ int module_get_kallsym(unsigned int symnum, unsigned >long *value, char *type, > if (symnum < mod->num_symtab) { > *value = mod->symtab[symnum].st_value; > *type = mod->symtab[symnum].st_info; >- strlcpy(name, mod->strtab + mod->symtab[symnum].st_name, >- KSYM_NAME_LEN); >+ strlcpy(name, symname(mod, symnum), KSYM_NAME_LEN); > strlcpy(module_name, mod->name, MODULE_NAME_LEN); > *exported = is_exported(name, *value, mod); > preempt_enable(); >@@ -3781,7 +3785,7 @@ static unsigned long mod_find_symname(struct module >*mod, const char *name) > unsigned int i; > > for (i = 0; i < mod->num_symtab; i++) >- if (strcmp(name, mod->strtab+mod->symtab[i].st_name) == 0 && >+ if (strcmp(name, symname(mod, i)) == 0 && > mod->symtab[i].st_info != 'U') > return mod->symtab[i].st_value; > return 0; >@@ -3825,7 +3829,7 @@ int module_kallsyms_on_each_symbol(int (*fn)(void *, >const char *, > if (mod->state == MODULE_STATE_UNFORMED) > continue; > for (i = 0; i < mod->num_symtab; i++) { >- ret = fn(data, mod->strtab + mod->symtab[i].st_name, >+ ret = fn(data, symname(mod, i), > mod, mod->symtab[i].st_value); > if (ret != 0) > return ret; >-- >2.5.0