提交 9b20a352 编写于 作者: P Petr Mladek 提交者: Rusty Russell

module: add within_module() function

It is just a small optimization that allows to replace few
occurrences of within_module_init() || within_module_core()
with a single call.
Signed-off-by: NPetr Mladek <pmladek@suse.cz>
Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
上级 3a611c3c
...@@ -408,6 +408,11 @@ static inline int within_module_init(unsigned long addr, const struct module *mo ...@@ -408,6 +408,11 @@ static inline int within_module_init(unsigned long addr, const struct module *mo
addr < (unsigned long)mod->module_init + mod->init_size; addr < (unsigned long)mod->module_init + mod->init_size;
} }
static inline int within_module(unsigned long addr, const struct module *mod)
{
return within_module_init(addr, mod) || within_module_core(addr, mod);
}
/* Search for module by name: must hold module_mutex. */ /* Search for module by name: must hold module_mutex. */
struct module *find_module(const char *name); struct module *find_module(const char *name);
......
...@@ -3448,8 +3448,7 @@ const char *module_address_lookup(unsigned long addr, ...@@ -3448,8 +3448,7 @@ const char *module_address_lookup(unsigned long addr,
list_for_each_entry_rcu(mod, &modules, list) { list_for_each_entry_rcu(mod, &modules, list) {
if (mod->state == MODULE_STATE_UNFORMED) if (mod->state == MODULE_STATE_UNFORMED)
continue; continue;
if (within_module_init(addr, mod) || if (within_module(addr, mod)) {
within_module_core(addr, mod)) {
if (modname) if (modname)
*modname = mod->name; *modname = mod->name;
ret = get_ksymbol(mod, addr, size, offset); ret = get_ksymbol(mod, addr, size, offset);
...@@ -3473,8 +3472,7 @@ int lookup_module_symbol_name(unsigned long addr, char *symname) ...@@ -3473,8 +3472,7 @@ int lookup_module_symbol_name(unsigned long addr, char *symname)
list_for_each_entry_rcu(mod, &modules, list) { list_for_each_entry_rcu(mod, &modules, list) {
if (mod->state == MODULE_STATE_UNFORMED) if (mod->state == MODULE_STATE_UNFORMED)
continue; continue;
if (within_module_init(addr, mod) || if (within_module(addr, mod)) {
within_module_core(addr, mod)) {
const char *sym; const char *sym;
sym = get_ksymbol(mod, addr, NULL, NULL); sym = get_ksymbol(mod, addr, NULL, NULL);
...@@ -3499,8 +3497,7 @@ int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size, ...@@ -3499,8 +3497,7 @@ int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size,
list_for_each_entry_rcu(mod, &modules, list) { list_for_each_entry_rcu(mod, &modules, list) {
if (mod->state == MODULE_STATE_UNFORMED) if (mod->state == MODULE_STATE_UNFORMED)
continue; continue;
if (within_module_init(addr, mod) || if (within_module(addr, mod)) {
within_module_core(addr, mod)) {
const char *sym; const char *sym;
sym = get_ksymbol(mod, addr, size, offset); sym = get_ksymbol(mod, addr, size, offset);
...@@ -3764,8 +3761,7 @@ struct module *__module_address(unsigned long addr) ...@@ -3764,8 +3761,7 @@ struct module *__module_address(unsigned long addr)
list_for_each_entry_rcu(mod, &modules, list) { list_for_each_entry_rcu(mod, &modules, list) {
if (mod->state == MODULE_STATE_UNFORMED) if (mod->state == MODULE_STATE_UNFORMED)
continue; continue;
if (within_module_core(addr, mod) if (within_module(addr, mod))
|| within_module_init(addr, mod))
return mod; return mod;
} }
return NULL; return NULL;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册