Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9b20a352 authored by Petr Mladek's avatar Petr Mladek Committed by Rusty Russell
Browse files

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: default avatarPetr Mladek <pmladek@suse.cz>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 3a611c3c
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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;
}

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. */
struct module *find_module(const char *name);

+4 −8
Original line number Diff line number Diff line
@@ -3448,8 +3448,7 @@ const char *module_address_lookup(unsigned long addr,
	list_for_each_entry_rcu(mod, &modules, list) {
		if (mod->state == MODULE_STATE_UNFORMED)
			continue;
		if (within_module_init(addr, mod) ||
		    within_module_core(addr, mod)) {
		if (within_module(addr, mod)) {
			if (modname)
				*modname = mod->name;
			ret = get_ksymbol(mod, addr, size, offset);
@@ -3473,8 +3472,7 @@ int lookup_module_symbol_name(unsigned long addr, char *symname)
	list_for_each_entry_rcu(mod, &modules, list) {
		if (mod->state == MODULE_STATE_UNFORMED)
			continue;
		if (within_module_init(addr, mod) ||
		    within_module_core(addr, mod)) {
		if (within_module(addr, mod)) {
			const char *sym;

			sym = get_ksymbol(mod, addr, NULL, NULL);
@@ -3499,8 +3497,7 @@ int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size,
	list_for_each_entry_rcu(mod, &modules, list) {
		if (mod->state == MODULE_STATE_UNFORMED)
			continue;
		if (within_module_init(addr, mod) ||
		    within_module_core(addr, mod)) {
		if (within_module(addr, mod)) {
			const char *sym;

			sym = get_ksymbol(mod, addr, size, offset);
@@ -3764,8 +3761,7 @@ struct module *__module_address(unsigned long addr)
	list_for_each_entry_rcu(mod, &modules, list) {
		if (mod->state == MODULE_STATE_UNFORMED)
			continue;
		if (within_module_core(addr, mod)
		    || within_module_init(addr, mod))
		if (within_module(addr, mod))
			return mod;
	}
	return NULL;