/* Must be called with preempt disabled or module mutex held so that module doesn't get freed during this.  */
struct module* __module_address(unsigned long addr)
/* Must be called with preempt disabled or module mutex held so that module doesn't get freed during this.  */
struct module* __module_address(unsigned long addr)
{
	struct module *mod;
	if (addr < module_addr_min || addr > module_addr_max)
		return NULL;
	list_for_each_entry_rcu(mod, &modules, list)
		if (within_module_core(addr, mod)
		    || within_module_init(addr, mod))
			return mod;
	return NULL;
}