From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751600AbcBEGpT (ORCPT ); Fri, 5 Feb 2016 01:45:19 -0500 Received: from mail7.hitachi.co.jp ([133.145.228.42]:53231 "EHLO mail7.hitachi.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750846AbcBEGpS (ORCPT ); Fri, 5 Feb 2016 01:45:18 -0500 From: =?utf-8?B?5bmz5p2+6ZuF5bezIC8gSElSQU1BVFXvvIxNQVNBTUk=?= To: "'Rusty Russell'" , "linux-kernel@vger.kernel.org" CC: Weilong Chen , "\"PDate:Wed\"@ozlabs.org" <"PDate:Wed"@ozlabs.org>, "stable@kernel.org" Subject: RE: [PATCH 2/3] module: wrapper for symbol name. Thread-Topic: [PATCH 2/3] module: wrapper for symbol name. Thread-Index: AQHRX6ozQaf+7MZQQU+f5IycQTPBkZ8cqo0g Date: Fri, 5 Feb 2016 06:45:14 +0000 Message-ID: <50399556C9727B4D88A595C8584AAB37B4DDD199@GSjpTKYDCembx31.service.hitachi.net> References: <1454631253-14379-1-git-send-email-rusty@rustcorp.com.au> <1454631253-14379-3-git-send-email-rusty@rustcorp.com.au> In-Reply-To: <1454631253-14379-3-git-send-email-rusty@rustcorp.com.au> Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.198.220.63] Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id u156jPwg012721 From: Rusty Russell [mailto:rusty@rustcorp.com.au] > >This trivial wrapper adds clarity and makes the following patch >smaller. > >Cc: stable@kernel.org >Signed-off-by: Rusty Russell Looks good to me. Reviewed-by: Masami Hiramatsu 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