/* Must be called with preempt disabled or module mutex held so that module doesn't get freed during this.  */
struct module* __module_text_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_text_address(unsigned long addr)
{
	struct module *mod = __module_address(addr);
	if (mod) {
		if (!within(addr, mod->module_init, mod->init_text_size)
		    && !within(addr, mod->module_core, mod->core_text_size))
			mod = NULL;
	}
	return mod;
}