Lines Matching refs:mod
126 struct module *mod = mtn->mod; in __mod_tree_val() local
128 if (unlikely(mtn == &mod->mtn_init)) in __mod_tree_val()
129 return (unsigned long)mod->module_init; in __mod_tree_val()
131 return (unsigned long)mod->module_core; in __mod_tree_val()
137 struct module *mod = mtn->mod; in __mod_tree_size() local
139 if (unlikely(mtn == &mod->mtn_init)) in __mod_tree_size()
140 return (unsigned long)mod->init_size; in __mod_tree_size()
142 return (unsigned long)mod->core_size; in __mod_tree_size()
198 static void mod_tree_insert(struct module *mod) in mod_tree_insert() argument
200 mod->mtn_core.mod = mod; in mod_tree_insert()
201 mod->mtn_init.mod = mod; in mod_tree_insert()
203 __mod_tree_insert(&mod->mtn_core); in mod_tree_insert()
204 if (mod->init_size) in mod_tree_insert()
205 __mod_tree_insert(&mod->mtn_init); in mod_tree_insert()
208 static void mod_tree_remove_init(struct module *mod) in mod_tree_remove_init() argument
210 if (mod->init_size) in mod_tree_remove_init()
211 __mod_tree_remove(&mod->mtn_init); in mod_tree_remove_init()
214 static void mod_tree_remove(struct module *mod) in mod_tree_remove() argument
216 __mod_tree_remove(&mod->mtn_core); in mod_tree_remove()
217 mod_tree_remove_init(mod); in mod_tree_remove()
228 return container_of(ltn, struct mod_tree_node, node)->mod; in mod_find()
235 static void mod_tree_insert(struct module *mod) { } in mod_tree_insert() argument
236 static void mod_tree_remove_init(struct module *mod) { } in mod_tree_remove_init() argument
237 static void mod_tree_remove(struct module *mod) { } in mod_tree_remove() argument
241 struct module *mod; in mod_find() local
243 list_for_each_entry_rcu(mod, &modules, list) { in mod_find()
244 if (within_module(addr, mod)) in mod_find()
245 return mod; in mod_find()
268 static void mod_update_bounds(struct module *mod) in mod_update_bounds() argument
270 __mod_update_bounds(mod->module_core, mod->core_size); in mod_update_bounds()
271 if (mod->init_size) in mod_update_bounds()
272 __mod_update_bounds(mod->module_init, mod->init_size); in mod_update_bounds()
334 unsigned int sym, str, mod, vers, info, pcpu; member
340 static inline int strong_try_module_get(struct module *mod) in strong_try_module_get() argument
342 BUG_ON(mod && mod->state == MODULE_STATE_UNFORMED); in strong_try_module_get()
343 if (mod && mod->state == MODULE_STATE_COMING) in strong_try_module_get()
345 if (try_module_get(mod)) in strong_try_module_get()
351 static inline void add_taint_module(struct module *mod, unsigned flag, in add_taint_module() argument
355 mod->taints |= (1U << flag); in add_taint_module()
362 void __module_put_and_exit(struct module *mod, long code) in __module_put_and_exit() argument
364 module_put(mod); in __module_put_and_exit()
453 struct module *mod; in each_symbol_section() local
478 list_for_each_entry_rcu(mod, &modules, list) { in each_symbol_section()
480 { mod->syms, mod->syms + mod->num_syms, mod->crcs, in each_symbol_section()
482 { mod->gpl_syms, mod->gpl_syms + mod->num_gpl_syms, in each_symbol_section()
483 mod->gpl_crcs, in each_symbol_section()
485 { mod->gpl_future_syms, in each_symbol_section()
486 mod->gpl_future_syms + mod->num_gpl_future_syms, in each_symbol_section()
487 mod->gpl_future_crcs, in each_symbol_section()
490 { mod->unused_syms, in each_symbol_section()
491 mod->unused_syms + mod->num_unused_syms, in each_symbol_section()
492 mod->unused_crcs, in each_symbol_section()
494 { mod->unused_gpl_syms, in each_symbol_section()
495 mod->unused_gpl_syms + mod->num_unused_gpl_syms, in each_symbol_section()
496 mod->unused_gpl_crcs, in each_symbol_section()
501 if (mod->state == MODULE_STATE_UNFORMED) in each_symbol_section()
504 if (each_symbol_in_section(arr, ARRAY_SIZE(arr), mod, fn, data)) in each_symbol_section()
615 struct module *mod; in find_module_all() local
619 list_for_each_entry(mod, &modules, list) { in find_module_all()
620 if (!even_unformed && mod->state == MODULE_STATE_UNFORMED) in find_module_all()
622 if (strlen(mod->name) == len && !memcmp(mod->name, name, len)) in find_module_all()
623 return mod; in find_module_all()
637 static inline void __percpu *mod_percpu(struct module *mod) in mod_percpu() argument
639 return mod->percpu; in mod_percpu()
642 static int percpu_modalloc(struct module *mod, struct load_info *info) in percpu_modalloc() argument
652 mod->name, align, PAGE_SIZE); in percpu_modalloc()
656 mod->percpu = __alloc_reserved_percpu(pcpusec->sh_size, align); in percpu_modalloc()
657 if (!mod->percpu) { in percpu_modalloc()
659 mod->name, (unsigned long)pcpusec->sh_size); in percpu_modalloc()
662 mod->percpu_size = pcpusec->sh_size; in percpu_modalloc()
666 static void percpu_modfree(struct module *mod) in percpu_modfree() argument
668 free_percpu(mod->percpu); in percpu_modfree()
676 static void percpu_modcopy(struct module *mod, in percpu_modcopy() argument
682 memcpy(per_cpu_ptr(mod->percpu, cpu), from, size); in percpu_modcopy()
696 struct module *mod; in is_module_percpu_address() local
701 list_for_each_entry_rcu(mod, &modules, list) { in is_module_percpu_address()
702 if (mod->state == MODULE_STATE_UNFORMED) in is_module_percpu_address()
704 if (!mod->percpu_size) in is_module_percpu_address()
707 void *start = per_cpu_ptr(mod->percpu, cpu); in is_module_percpu_address()
710 (void *)addr < start + mod->percpu_size) { in is_module_percpu_address()
723 static inline void __percpu *mod_percpu(struct module *mod) in mod_percpu() argument
727 static int percpu_modalloc(struct module *mod, struct load_info *info) in percpu_modalloc() argument
734 static inline void percpu_modfree(struct module *mod) in percpu_modfree() argument
741 static inline void percpu_modcopy(struct module *mod, in percpu_modcopy() argument
755 static void setup_modinfo_##field(struct module *mod, const char *s) \
757 mod->field = kstrdup(s, GFP_KERNEL); \
762 return scnprintf(buffer, PAGE_SIZE, "%s\n", mk->mod->field); \
764 static int modinfo_##field##_exists(struct module *mod) \
766 return mod->field != NULL; \
768 static void free_modinfo_##field(struct module *mod) \
770 kfree(mod->field); \
771 mod->field = NULL; \
794 static int module_unload_init(struct module *mod) in module_unload_init() argument
800 atomic_set(&mod->refcnt, MODULE_REF_BASE); in module_unload_init()
802 INIT_LIST_HEAD(&mod->source_list); in module_unload_init()
803 INIT_LIST_HEAD(&mod->target_list); in module_unload_init()
806 atomic_inc(&mod->refcnt); in module_unload_init()
874 static void module_unload_free(struct module *mod) in module_unload_free() argument
879 list_for_each_entry_safe(use, tmp, &mod->target_list, target_list) { in module_unload_free()
881 pr_debug("%s unusing %s\n", mod->name, i->name); in module_unload_free()
906 static int try_release_module_ref(struct module *mod) in try_release_module_ref() argument
911 ret = atomic_sub_return(MODULE_REF_BASE, &mod->refcnt); in try_release_module_ref()
915 ret = atomic_add_unless(&mod->refcnt, MODULE_REF_BASE, 0); in try_release_module_ref()
920 static int try_stop_module(struct module *mod, int flags, int *forced) in try_stop_module() argument
923 if (try_release_module_ref(mod) != 0) { in try_stop_module()
930 mod->state = MODULE_STATE_GOING; in try_stop_module()
944 int module_refcount(struct module *mod) in module_refcount() argument
946 return atomic_read(&mod->refcnt) - MODULE_REF_BASE; in module_refcount()
951 static void free_module(struct module *mod);
956 struct module *mod; in SYSCALL_DEFINE2() local
970 mod = find_module(name); in SYSCALL_DEFINE2()
971 if (!mod) { in SYSCALL_DEFINE2()
976 if (!list_empty(&mod->source_list)) { in SYSCALL_DEFINE2()
983 if (mod->state != MODULE_STATE_LIVE) { in SYSCALL_DEFINE2()
985 pr_debug("%s already dying\n", mod->name); in SYSCALL_DEFINE2()
991 if (mod->init && !mod->exit) { in SYSCALL_DEFINE2()
1001 ret = try_stop_module(mod, flags, &forced); in SYSCALL_DEFINE2()
1007 if (mod->exit != NULL) in SYSCALL_DEFINE2()
1008 mod->exit(); in SYSCALL_DEFINE2()
1010 MODULE_STATE_GOING, mod); in SYSCALL_DEFINE2()
1014 strlcpy(last_unloaded_module, mod->name, sizeof(last_unloaded_module)); in SYSCALL_DEFINE2()
1016 free_module(mod); in SYSCALL_DEFINE2()
1023 static inline void print_unload_info(struct seq_file *m, struct module *mod) in print_unload_info() argument
1028 seq_printf(m, " %i ", module_refcount(mod)); in print_unload_info()
1034 list_for_each_entry(use, &mod->source_list, source_list) { in print_unload_info()
1039 if (mod->init != NULL && mod->exit == NULL) { in print_unload_info()
1084 return sprintf(buffer, "%i\n", module_refcount(mk->mod)); in show_refcnt()
1135 static inline void print_unload_info(struct seq_file *m, struct module *mod) in print_unload_info() argument
1141 static inline void module_unload_free(struct module *mod) in module_unload_free() argument
1151 static inline int module_unload_init(struct module *mod) in module_unload_init() argument
1157 static size_t module_flags_taint(struct module *mod, char *buf) in module_flags_taint() argument
1161 if (mod->taints & (1 << TAINT_PROPRIETARY_MODULE)) in module_flags_taint()
1163 if (mod->taints & (1 << TAINT_OOT_MODULE)) in module_flags_taint()
1165 if (mod->taints & (1 << TAINT_FORCED_MODULE)) in module_flags_taint()
1167 if (mod->taints & (1 << TAINT_CRAP)) in module_flags_taint()
1169 if (mod->taints & (1 << TAINT_UNSIGNED_MODULE)) in module_flags_taint()
1184 switch (mk->mod->state) { in show_initstate()
1220 return sprintf(buffer, "%u\n", mk->mod->core_size); in show_coresize()
1229 return sprintf(buffer, "%u\n", mk->mod->init_size); in show_initsize()
1240 l = module_flags_taint(mk->mod, buffer); in show_taint()
1264 static int try_to_force_load(struct module *mod, const char *reason) in try_to_force_load() argument
1268 pr_warn("%s: %s: kernel tainted.\n", mod->name, reason); in try_to_force_load()
1269 add_taint_module(mod, TAINT_FORCED_MODULE, LOCKDEP_NOW_UNRELIABLE); in try_to_force_load()
1291 struct module *mod, in check_version() argument
1304 return try_to_force_load(mod, symname) == 0; in check_version()
1321 pr_warn("%s: no symbol version for %s\n", mod->name, symname); in check_version()
1326 mod->name, symname); in check_version()
1332 struct module *mod) in check_modstruct_version() argument
1348 VMLINUX_SYMBOL_STR(module_layout), mod, crc, in check_modstruct_version()
1366 struct module *mod, in check_version() argument
1375 struct module *mod) in check_modstruct_version() argument
1388 static const struct kernel_symbol *resolve_symbol(struct module *mod, in resolve_symbol() argument
1406 !(mod->taints & (1 << TAINT_PROPRIETARY_MODULE)), true); in resolve_symbol()
1410 if (!check_version(info->sechdrs, info->index.vers, name, mod, crc, in resolve_symbol()
1416 err = ref_module(mod, owner); in resolve_symbol()
1431 resolve_symbol_wait(struct module *mod, in resolve_symbol_wait() argument
1439 !IS_ERR(ksym = resolve_symbol(mod, info, name, owner)) in resolve_symbol_wait()
1443 mod->name, owner); in resolve_symbol_wait()
1489 static void add_sect_attrs(struct module *mod, const struct load_info *info) in add_sect_attrs() argument
1534 if (sysfs_create_group(&mod->mkobj.kobj, §_attrs->grp)) in add_sect_attrs()
1537 mod->sect_attrs = sect_attrs; in add_sect_attrs()
1543 static void remove_sect_attrs(struct module *mod) in remove_sect_attrs() argument
1545 if (mod->sect_attrs) { in remove_sect_attrs()
1546 sysfs_remove_group(&mod->mkobj.kobj, in remove_sect_attrs()
1547 &mod->sect_attrs->grp); in remove_sect_attrs()
1550 free_sect_attrs(mod->sect_attrs); in remove_sect_attrs()
1551 mod->sect_attrs = NULL; in remove_sect_attrs()
1588 static void add_notes_attrs(struct module *mod, const struct load_info *info) in add_notes_attrs() argument
1595 if (!mod->sect_attrs) in add_notes_attrs()
1621 nattr->attr.name = mod->sect_attrs->attrs[loaded].name; in add_notes_attrs()
1631 notes_attrs->dir = kobject_create_and_add("notes", &mod->mkobj.kobj); in add_notes_attrs()
1640 mod->notes_attrs = notes_attrs; in add_notes_attrs()
1647 static void remove_notes_attrs(struct module *mod) in remove_notes_attrs() argument
1649 if (mod->notes_attrs) in remove_notes_attrs()
1650 free_notes_attrs(mod->notes_attrs, mod->notes_attrs->notes); in remove_notes_attrs()
1655 static inline void add_sect_attrs(struct module *mod, in add_sect_attrs() argument
1660 static inline void remove_sect_attrs(struct module *mod) in remove_sect_attrs() argument
1664 static inline void add_notes_attrs(struct module *mod, in add_notes_attrs() argument
1669 static inline void remove_notes_attrs(struct module *mod) in remove_notes_attrs() argument
1674 static void add_usage_links(struct module *mod) in add_usage_links() argument
1681 list_for_each_entry(use, &mod->target_list, target_list) { in add_usage_links()
1683 &mod->mkobj.kobj, mod->name); in add_usage_links()
1689 static void del_usage_links(struct module *mod) in del_usage_links() argument
1695 list_for_each_entry(use, &mod->target_list, target_list) in del_usage_links()
1696 sysfs_remove_link(use->target->holders_dir, mod->name); in del_usage_links()
1701 static int module_add_modinfo_attrs(struct module *mod) in module_add_modinfo_attrs() argument
1708 mod->modinfo_attrs = kzalloc((sizeof(struct module_attribute) * in module_add_modinfo_attrs()
1711 if (!mod->modinfo_attrs) in module_add_modinfo_attrs()
1714 temp_attr = mod->modinfo_attrs; in module_add_modinfo_attrs()
1717 (attr->test && attr->test(mod))) { in module_add_modinfo_attrs()
1720 error = sysfs_create_file(&mod->mkobj.kobj, in module_add_modinfo_attrs()
1728 static void module_remove_modinfo_attrs(struct module *mod) in module_remove_modinfo_attrs() argument
1733 for (i = 0; (attr = &mod->modinfo_attrs[i]); i++) { in module_remove_modinfo_attrs()
1737 sysfs_remove_file(&mod->mkobj.kobj, &attr->attr); in module_remove_modinfo_attrs()
1739 attr->free(mod); in module_remove_modinfo_attrs()
1741 kfree(mod->modinfo_attrs); in module_remove_modinfo_attrs()
1744 static void mod_kobject_put(struct module *mod) in mod_kobject_put() argument
1747 mod->mkobj.kobj_completion = &c; in mod_kobject_put()
1748 kobject_put(&mod->mkobj.kobj); in mod_kobject_put()
1752 static int mod_sysfs_init(struct module *mod) in mod_sysfs_init() argument
1758 pr_err("%s: module sysfs not initialized\n", mod->name); in mod_sysfs_init()
1763 kobj = kset_find_obj(module_kset, mod->name); in mod_sysfs_init()
1765 pr_err("%s: module is already loaded\n", mod->name); in mod_sysfs_init()
1771 mod->mkobj.mod = mod; in mod_sysfs_init()
1773 memset(&mod->mkobj.kobj, 0, sizeof(mod->mkobj.kobj)); in mod_sysfs_init()
1774 mod->mkobj.kobj.kset = module_kset; in mod_sysfs_init()
1775 err = kobject_init_and_add(&mod->mkobj.kobj, &module_ktype, NULL, in mod_sysfs_init()
1776 "%s", mod->name); in mod_sysfs_init()
1778 mod_kobject_put(mod); in mod_sysfs_init()
1785 static int mod_sysfs_setup(struct module *mod, in mod_sysfs_setup() argument
1792 err = mod_sysfs_init(mod); in mod_sysfs_setup()
1796 mod->holders_dir = kobject_create_and_add("holders", &mod->mkobj.kobj); in mod_sysfs_setup()
1797 if (!mod->holders_dir) { in mod_sysfs_setup()
1802 err = module_param_sysfs_setup(mod, kparam, num_params); in mod_sysfs_setup()
1806 err = module_add_modinfo_attrs(mod); in mod_sysfs_setup()
1810 add_usage_links(mod); in mod_sysfs_setup()
1811 add_sect_attrs(mod, info); in mod_sysfs_setup()
1812 add_notes_attrs(mod, info); in mod_sysfs_setup()
1814 kobject_uevent(&mod->mkobj.kobj, KOBJ_ADD); in mod_sysfs_setup()
1818 module_param_sysfs_remove(mod); in mod_sysfs_setup()
1820 kobject_put(mod->holders_dir); in mod_sysfs_setup()
1822 mod_kobject_put(mod); in mod_sysfs_setup()
1827 static void mod_sysfs_fini(struct module *mod) in mod_sysfs_fini() argument
1829 remove_notes_attrs(mod); in mod_sysfs_fini()
1830 remove_sect_attrs(mod); in mod_sysfs_fini()
1831 mod_kobject_put(mod); in mod_sysfs_fini()
1834 static void init_param_lock(struct module *mod) in init_param_lock() argument
1836 mutex_init(&mod->param_lock); in init_param_lock()
1840 static int mod_sysfs_setup(struct module *mod, in mod_sysfs_setup() argument
1848 static void mod_sysfs_fini(struct module *mod) in mod_sysfs_fini() argument
1852 static void module_remove_modinfo_attrs(struct module *mod) in module_remove_modinfo_attrs() argument
1856 static void del_usage_links(struct module *mod) in del_usage_links() argument
1860 static void init_param_lock(struct module *mod) in init_param_lock() argument
1865 static void mod_sysfs_teardown(struct module *mod) in mod_sysfs_teardown() argument
1867 del_usage_links(mod); in mod_sysfs_teardown()
1868 module_remove_modinfo_attrs(mod); in mod_sysfs_teardown()
1869 module_param_sysfs_remove(mod); in mod_sysfs_teardown()
1870 kobject_put(mod->mkobj.drivers_dir); in mod_sysfs_teardown()
1871 kobject_put(mod->holders_dir); in mod_sysfs_teardown()
1872 mod_sysfs_fini(mod); in mod_sysfs_teardown()
1919 static void unset_module_core_ro_nx(struct module *mod) in unset_module_core_ro_nx() argument
1921 set_page_attributes(mod->module_core + mod->core_text_size, in unset_module_core_ro_nx()
1922 mod->module_core + mod->core_size, in unset_module_core_ro_nx()
1924 set_page_attributes(mod->module_core, in unset_module_core_ro_nx()
1925 mod->module_core + mod->core_ro_size, in unset_module_core_ro_nx()
1929 static void unset_module_init_ro_nx(struct module *mod) in unset_module_init_ro_nx() argument
1931 set_page_attributes(mod->module_init + mod->init_text_size, in unset_module_init_ro_nx()
1932 mod->module_init + mod->init_size, in unset_module_init_ro_nx()
1934 set_page_attributes(mod->module_init, in unset_module_init_ro_nx()
1935 mod->module_init + mod->init_ro_size, in unset_module_init_ro_nx()
1942 struct module *mod; in set_all_modules_text_rw() local
1945 list_for_each_entry_rcu(mod, &modules, list) { in set_all_modules_text_rw()
1946 if (mod->state == MODULE_STATE_UNFORMED) in set_all_modules_text_rw()
1948 if ((mod->module_core) && (mod->core_text_size)) { in set_all_modules_text_rw()
1949 set_page_attributes(mod->module_core, in set_all_modules_text_rw()
1950 mod->module_core + mod->core_text_size, in set_all_modules_text_rw()
1953 if ((mod->module_init) && (mod->init_text_size)) { in set_all_modules_text_rw()
1954 set_page_attributes(mod->module_init, in set_all_modules_text_rw()
1955 mod->module_init + mod->init_text_size, in set_all_modules_text_rw()
1965 struct module *mod; in set_all_modules_text_ro() local
1968 list_for_each_entry_rcu(mod, &modules, list) { in set_all_modules_text_ro()
1969 if (mod->state == MODULE_STATE_UNFORMED) in set_all_modules_text_ro()
1971 if ((mod->module_core) && (mod->core_text_size)) { in set_all_modules_text_ro()
1972 set_page_attributes(mod->module_core, in set_all_modules_text_ro()
1973 mod->module_core + mod->core_text_size, in set_all_modules_text_ro()
1976 if ((mod->module_init) && (mod->init_text_size)) { in set_all_modules_text_ro()
1977 set_page_attributes(mod->module_init, in set_all_modules_text_ro()
1978 mod->module_init + mod->init_text_size, in set_all_modules_text_ro()
1986 static void unset_module_core_ro_nx(struct module *mod) { } in unset_module_core_ro_nx() argument
1987 static void unset_module_init_ro_nx(struct module *mod) { } in unset_module_init_ro_nx() argument
1995 void __weak module_arch_cleanup(struct module *mod) in module_arch_cleanup() argument
1999 void __weak module_arch_freeing_init(struct module *mod) in module_arch_freeing_init() argument
2004 static void free_module(struct module *mod) in free_module() argument
2006 trace_module_free(mod); in free_module()
2008 mod_sysfs_teardown(mod); in free_module()
2013 mod->state = MODULE_STATE_UNFORMED; in free_module()
2017 ddebug_remove_module(mod->name); in free_module()
2020 module_arch_cleanup(mod); in free_module()
2023 module_unload_free(mod); in free_module()
2026 destroy_params(mod->kp, mod->num_kp); in free_module()
2031 list_del_rcu(&mod->list); in free_module()
2032 mod_tree_remove(mod); in free_module()
2034 module_bug_cleanup(mod); in free_module()
2040 unset_module_init_ro_nx(mod); in free_module()
2041 module_arch_freeing_init(mod); in free_module()
2042 module_memfree(mod->module_init); in free_module()
2043 kfree(mod->args); in free_module()
2044 percpu_modfree(mod); in free_module()
2047 lockdep_free_key_range(mod->module_core, mod->core_size); in free_module()
2050 unset_module_core_ro_nx(mod); in free_module()
2051 module_memfree(mod->module_core); in free_module()
2079 static int verify_export_symbols(struct module *mod) in verify_export_symbols() argument
2088 { mod->syms, mod->num_syms }, in verify_export_symbols()
2089 { mod->gpl_syms, mod->num_gpl_syms }, in verify_export_symbols()
2090 { mod->gpl_future_syms, mod->num_gpl_future_syms }, in verify_export_symbols()
2092 { mod->unused_syms, mod->num_unused_syms }, in verify_export_symbols()
2093 { mod->unused_gpl_syms, mod->num_unused_gpl_syms }, in verify_export_symbols()
2102 mod->name, s->name, module_name(owner)); in verify_export_symbols()
2111 static int simplify_symbols(struct module *mod, const struct load_info *info) in simplify_symbols() argument
2133 mod->name); in simplify_symbols()
2144 ksym = resolve_symbol_wait(mod, info, name); in simplify_symbols()
2156 mod->name, name, PTR_ERR(ksym)); in simplify_symbols()
2163 secbase = (unsigned long)mod_percpu(mod); in simplify_symbols()
2174 static int apply_relocations(struct module *mod, const struct load_info *info) in apply_relocations() argument
2193 info->index.sym, i, mod); in apply_relocations()
2196 info->index.sym, i, mod); in apply_relocations()
2204 unsigned int __weak arch_mod_section_prepend(struct module *mod, in arch_mod_section_prepend() argument
2212 static long get_offset(struct module *mod, unsigned int *size, in get_offset() argument
2217 *size += arch_mod_section_prepend(mod, section); in get_offset()
2227 static void layout_sections(struct module *mod, struct load_info *info) in layout_sections() argument
2254 s->sh_entsize = get_offset(mod, &mod->core_size, s, i); in layout_sections()
2259 mod->core_size = debug_align(mod->core_size); in layout_sections()
2260 mod->core_text_size = mod->core_size; in layout_sections()
2263 mod->core_size = debug_align(mod->core_size); in layout_sections()
2264 mod->core_ro_size = mod->core_size; in layout_sections()
2267 mod->core_size = debug_align(mod->core_size); in layout_sections()
2283 s->sh_entsize = (get_offset(mod, &mod->init_size, s, i) in layout_sections()
2289 mod->init_size = debug_align(mod->init_size); in layout_sections()
2290 mod->init_text_size = mod->init_size; in layout_sections()
2293 mod->init_size = debug_align(mod->init_size); in layout_sections()
2294 mod->init_ro_size = mod->init_size; in layout_sections()
2297 mod->init_size = debug_align(mod->init_size); in layout_sections()
2303 static void set_license(struct module *mod, const char *license) in set_license() argument
2311 mod->name, license); in set_license()
2312 add_taint_module(mod, TAINT_PROPRIETARY_MODULE, in set_license()
2350 static void setup_modinfo(struct module *mod, struct load_info *info) in setup_modinfo() argument
2357 attr->setup(mod, get_modinfo(info, attr->attr.name)); in setup_modinfo()
2361 static void free_modinfo(struct module *mod) in free_modinfo() argument
2368 attr->free(mod); in free_modinfo()
2384 const struct module *mod) in is_exported() argument
2387 if (!mod) in is_exported()
2390 ks = lookup_symbol(name, mod->syms, mod->syms + mod->num_syms); in is_exported()
2463 static void layout_symtab(struct module *mod, struct load_info *info) in layout_symtab() argument
2472 symsect->sh_entsize = get_offset(mod, &mod->init_size, symsect, in layout_symtab()
2489 info->symoffs = ALIGN(mod->core_size, symsect->sh_addralign ?: 1); in layout_symtab()
2490 info->stroffs = mod->core_size = info->symoffs + ndst * sizeof(Elf_Sym); in layout_symtab()
2491 mod->core_size += strtab_size; in layout_symtab()
2492 mod->core_size = debug_align(mod->core_size); in layout_symtab()
2496 strsect->sh_entsize = get_offset(mod, &mod->init_size, strsect, in layout_symtab()
2501 mod->init_size = ALIGN(mod->init_size, in layout_symtab()
2503 info->mod_kallsyms_init_off = mod->init_size; in layout_symtab()
2504 mod->init_size += sizeof(struct mod_kallsyms); in layout_symtab()
2505 mod->init_size = debug_align(mod->init_size); in layout_symtab()
2513 static void add_kallsyms(struct module *mod, const struct load_info *info) in add_kallsyms() argument
2522 mod->kallsyms = mod->module_init + info->mod_kallsyms_init_off; in add_kallsyms()
2524 mod->kallsyms->symtab = (void *)symsec->sh_addr; in add_kallsyms()
2525 mod->kallsyms->num_symtab = symsec->sh_size / sizeof(Elf_Sym); in add_kallsyms()
2527 mod->kallsyms->strtab = (void *)info->sechdrs[info->index.str].sh_addr; in add_kallsyms()
2530 for (i = 0; i < mod->kallsyms->num_symtab; i++) in add_kallsyms()
2531 mod->kallsyms->symtab[i].st_info in add_kallsyms()
2532 = elf_type(&mod->kallsyms->symtab[i], info); in add_kallsyms()
2535 mod->core_kallsyms.symtab = dst = mod->module_core + info->symoffs; in add_kallsyms()
2536 mod->core_kallsyms.strtab = s = mod->module_core + info->stroffs; in add_kallsyms()
2537 src = mod->kallsyms->symtab; in add_kallsyms()
2538 for (ndst = i = 0; i < mod->kallsyms->num_symtab; i++) { in add_kallsyms()
2542 dst[ndst++].st_name = s - mod->core_kallsyms.strtab; in add_kallsyms()
2543 s += strlcpy(s, &mod->kallsyms->strtab[src[i].st_name], in add_kallsyms()
2547 mod->core_kallsyms.num_symtab = ndst; in add_kallsyms()
2550 static inline void layout_symtab(struct module *mod, struct load_info *info) in layout_symtab() argument
2554 static void add_kallsyms(struct module *mod, const struct load_info *info) in add_kallsyms() argument
2582 static void kmemleak_load_module(const struct module *mod, in kmemleak_load_module() argument
2588 kmemleak_scan_area(mod, sizeof(struct module), GFP_KERNEL); in kmemleak_load_module()
2602 static inline void kmemleak_load_module(const struct module *mod, in kmemleak_load_module() argument
2613 const void *mod = info->hdr; in module_sig_check() local
2616 memcmp(mod + info->len - markerlen, MODULE_SIG_STRING, markerlen) == 0) { in module_sig_check()
2619 err = mod_verify_sig(mod, &info->len); in module_sig_check()
2816 struct module *mod; in setup_load_info() local
2838 info->index.mod = find_sec(info, ".gnu.linkonce.this_module"); in setup_load_info()
2839 if (!info->index.mod) { in setup_load_info()
2844 mod = (void *)info->sechdrs[info->index.mod].sh_addr; in setup_load_info()
2847 pr_warn("%s: module has no symbols (stripped?)\n", mod->name); in setup_load_info()
2854 if (!check_modstruct_version(info->sechdrs, info->index.vers, mod)) in setup_load_info()
2857 return mod; in setup_load_info()
2860 static int check_modinfo(struct module *mod, struct load_info *info, int flags) in check_modinfo() argument
2870 err = try_to_force_load(mod, "bad vermagic"); in check_modinfo()
2875 mod->name, modmagic, vermagic); in check_modinfo()
2880 add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK); in check_modinfo()
2883 add_taint_module(mod, TAINT_CRAP, LOCKDEP_STILL_OK); in check_modinfo()
2885 "is unknown, you have been warned.\n", mod->name); in check_modinfo()
2889 set_license(mod, get_modinfo(info, "license")); in check_modinfo()
2894 static int find_module_sections(struct module *mod, struct load_info *info) in find_module_sections() argument
2896 mod->kp = section_objs(info, "__param", in find_module_sections()
2897 sizeof(*mod->kp), &mod->num_kp); in find_module_sections()
2898 mod->syms = section_objs(info, "__ksymtab", in find_module_sections()
2899 sizeof(*mod->syms), &mod->num_syms); in find_module_sections()
2900 mod->crcs = section_addr(info, "__kcrctab"); in find_module_sections()
2901 mod->gpl_syms = section_objs(info, "__ksymtab_gpl", in find_module_sections()
2902 sizeof(*mod->gpl_syms), in find_module_sections()
2903 &mod->num_gpl_syms); in find_module_sections()
2904 mod->gpl_crcs = section_addr(info, "__kcrctab_gpl"); in find_module_sections()
2905 mod->gpl_future_syms = section_objs(info, in find_module_sections()
2907 sizeof(*mod->gpl_future_syms), in find_module_sections()
2908 &mod->num_gpl_future_syms); in find_module_sections()
2909 mod->gpl_future_crcs = section_addr(info, "__kcrctab_gpl_future"); in find_module_sections()
2912 mod->unused_syms = section_objs(info, "__ksymtab_unused", in find_module_sections()
2913 sizeof(*mod->unused_syms), in find_module_sections()
2914 &mod->num_unused_syms); in find_module_sections()
2915 mod->unused_crcs = section_addr(info, "__kcrctab_unused"); in find_module_sections()
2916 mod->unused_gpl_syms = section_objs(info, "__ksymtab_unused_gpl", in find_module_sections()
2917 sizeof(*mod->unused_gpl_syms), in find_module_sections()
2918 &mod->num_unused_gpl_syms); in find_module_sections()
2919 mod->unused_gpl_crcs = section_addr(info, "__kcrctab_unused_gpl"); in find_module_sections()
2922 mod->ctors = section_objs(info, ".ctors", in find_module_sections()
2923 sizeof(*mod->ctors), &mod->num_ctors); in find_module_sections()
2924 if (!mod->ctors) in find_module_sections()
2925 mod->ctors = section_objs(info, ".init_array", in find_module_sections()
2926 sizeof(*mod->ctors), &mod->num_ctors); in find_module_sections()
2933 mod->name); in find_module_sections()
2939 mod->tracepoints_ptrs = section_objs(info, "__tracepoints_ptrs", in find_module_sections()
2940 sizeof(*mod->tracepoints_ptrs), in find_module_sections()
2941 &mod->num_tracepoints); in find_module_sections()
2944 mod->jump_entries = section_objs(info, "__jump_table", in find_module_sections()
2945 sizeof(*mod->jump_entries), in find_module_sections()
2946 &mod->num_jump_entries); in find_module_sections()
2949 mod->trace_events = section_objs(info, "_ftrace_events", in find_module_sections()
2950 sizeof(*mod->trace_events), in find_module_sections()
2951 &mod->num_trace_events); in find_module_sections()
2952 mod->trace_enums = section_objs(info, "_ftrace_enum_map", in find_module_sections()
2953 sizeof(*mod->trace_enums), in find_module_sections()
2954 &mod->num_trace_enums); in find_module_sections()
2957 mod->trace_bprintk_fmt_start = section_objs(info, "__trace_printk_fmt", in find_module_sections()
2958 sizeof(*mod->trace_bprintk_fmt_start), in find_module_sections()
2959 &mod->num_trace_bprintk_fmt); in find_module_sections()
2963 mod->ftrace_callsites = section_objs(info, "__mcount_loc", in find_module_sections()
2964 sizeof(*mod->ftrace_callsites), in find_module_sections()
2965 &mod->num_ftrace_callsites); in find_module_sections()
2968 mod->extable = section_objs(info, "__ex_table", in find_module_sections()
2969 sizeof(*mod->extable), &mod->num_exentries); in find_module_sections()
2972 pr_warn("%s: Ignoring obsolete parameters\n", mod->name); in find_module_sections()
2980 static int move_module(struct module *mod, struct load_info *info) in move_module() argument
2986 ptr = module_alloc(mod->core_size); in move_module()
2996 memset(ptr, 0, mod->core_size); in move_module()
2997 mod->module_core = ptr; in move_module()
2999 if (mod->init_size) { in move_module()
3000 ptr = module_alloc(mod->init_size); in move_module()
3009 module_memfree(mod->module_core); in move_module()
3012 memset(ptr, 0, mod->init_size); in move_module()
3013 mod->module_init = ptr; in move_module()
3015 mod->module_init = NULL; in move_module()
3027 dest = mod->module_init in move_module()
3030 dest = mod->module_core + shdr->sh_entsize; in move_module()
3043 static int check_module_license_and_versions(struct module *mod) in check_module_license_and_versions() argument
3050 if (strcmp(mod->name, "ndiswrapper") == 0) in check_module_license_and_versions()
3054 if (strcmp(mod->name, "driverloader") == 0) in check_module_license_and_versions()
3055 add_taint_module(mod, TAINT_PROPRIETARY_MODULE, in check_module_license_and_versions()
3059 if (strcmp(mod->name, "lve") == 0) in check_module_license_and_versions()
3060 add_taint_module(mod, TAINT_PROPRIETARY_MODULE, in check_module_license_and_versions()
3064 if ((mod->num_syms && !mod->crcs) in check_module_license_and_versions()
3065 || (mod->num_gpl_syms && !mod->gpl_crcs) in check_module_license_and_versions()
3066 || (mod->num_gpl_future_syms && !mod->gpl_future_crcs) in check_module_license_and_versions()
3068 || (mod->num_unused_syms && !mod->unused_crcs) in check_module_license_and_versions()
3069 || (mod->num_unused_gpl_syms && !mod->unused_gpl_crcs) in check_module_license_and_versions()
3072 return try_to_force_load(mod, in check_module_license_and_versions()
3079 static void flush_module_icache(const struct module *mod) in flush_module_icache() argument
3092 if (mod->module_init) in flush_module_icache()
3093 flush_icache_range((unsigned long)mod->module_init, in flush_module_icache()
3094 (unsigned long)mod->module_init in flush_module_icache()
3095 + mod->init_size); in flush_module_icache()
3096 flush_icache_range((unsigned long)mod->module_core, in flush_module_icache()
3097 (unsigned long)mod->module_core + mod->core_size); in flush_module_icache()
3105 struct module *mod) in module_frob_arch_sections() argument
3113 struct module *mod; in layout_and_allocate() local
3116 mod = setup_load_info(info, flags); in layout_and_allocate()
3117 if (IS_ERR(mod)) in layout_and_allocate()
3118 return mod; in layout_and_allocate()
3120 err = check_modinfo(mod, info, flags); in layout_and_allocate()
3126 info->secstrings, mod); in layout_and_allocate()
3136 layout_sections(mod, info); in layout_and_allocate()
3137 layout_symtab(mod, info); in layout_and_allocate()
3140 err = move_module(mod, info); in layout_and_allocate()
3145 mod = (void *)info->sechdrs[info->index.mod].sh_addr; in layout_and_allocate()
3146 kmemleak_load_module(mod, info); in layout_and_allocate()
3147 return mod; in layout_and_allocate()
3151 static void module_deallocate(struct module *mod, struct load_info *info) in module_deallocate() argument
3153 percpu_modfree(mod); in module_deallocate()
3154 module_arch_freeing_init(mod); in module_deallocate()
3155 module_memfree(mod->module_init); in module_deallocate()
3156 module_memfree(mod->module_core); in module_deallocate()
3166 static int post_relocation(struct module *mod, const struct load_info *info) in post_relocation() argument
3169 sort_extable(mod->extable, mod->extable + mod->num_exentries); in post_relocation()
3172 percpu_modcopy(mod, (void *)info->sechdrs[info->index.pcpu].sh_addr, in post_relocation()
3176 add_kallsyms(mod, info); in post_relocation()
3179 return module_finalize(info->hdr, info->sechdrs, mod); in post_relocation()
3185 struct module *mod; in finished_loading() local
3195 mod = find_module_all(name, strlen(name), true); in finished_loading()
3196 ret = !mod || mod->state == MODULE_STATE_LIVE in finished_loading()
3197 || mod->state == MODULE_STATE_GOING; in finished_loading()
3204 static void do_mod_ctors(struct module *mod) in do_mod_ctors() argument
3209 for (i = 0; i < mod->num_ctors; i++) in do_mod_ctors()
3210 mod->ctors[i](); in do_mod_ctors()
3233 static noinline int do_init_module(struct module *mod) in do_init_module() argument
3243 freeinit->module_init = mod->module_init; in do_init_module()
3251 do_mod_ctors(mod); in do_init_module()
3253 if (mod->init != NULL) in do_init_module()
3254 ret = do_one_initcall(mod->init); in do_init_module()
3262 __func__, mod->name, ret, __func__); in do_init_module()
3267 mod->state = MODULE_STATE_LIVE; in do_init_module()
3269 MODULE_STATE_LIVE, mod); in do_init_module()
3288 if (!mod->async_probe_requested && (current->flags & PF_USED_ASYNC)) in do_init_module()
3293 module_put(mod); in do_init_module()
3294 trim_init_extable(mod); in do_init_module()
3297 rcu_assign_pointer(mod->kallsyms, &mod->core_kallsyms); in do_init_module()
3299 mod_tree_remove_init(mod); in do_init_module()
3300 unset_module_init_ro_nx(mod); in do_init_module()
3301 module_arch_freeing_init(mod); in do_init_module()
3302 mod->module_init = NULL; in do_init_module()
3303 mod->init_size = 0; in do_init_module()
3304 mod->init_ro_size = 0; in do_init_module()
3305 mod->init_text_size = 0; in do_init_module()
3322 mod->state = MODULE_STATE_GOING; in do_init_module()
3324 module_put(mod); in do_init_module()
3326 MODULE_STATE_GOING, mod); in do_init_module()
3327 free_module(mod); in do_init_module()
3345 static int add_unformed_module(struct module *mod) in add_unformed_module() argument
3350 mod->state = MODULE_STATE_UNFORMED; in add_unformed_module()
3354 old = find_module_all(mod->name, strlen(mod->name), true); in add_unformed_module()
3361 finished_loading(mod->name)); in add_unformed_module()
3369 mod_update_bounds(mod); in add_unformed_module()
3370 list_add_rcu(&mod->list, &modules); in add_unformed_module()
3371 mod_tree_insert(mod); in add_unformed_module()
3380 static int complete_formation(struct module *mod, struct load_info *info) in complete_formation() argument
3387 err = verify_export_symbols(mod); in complete_formation()
3392 module_bug_finalize(info->hdr, info->sechdrs, mod); in complete_formation()
3395 set_section_ro_nx(mod->module_core, in complete_formation()
3396 mod->core_text_size, in complete_formation()
3397 mod->core_ro_size, in complete_formation()
3398 mod->core_size); in complete_formation()
3401 set_section_ro_nx(mod->module_init, in complete_formation()
3402 mod->init_text_size, in complete_formation()
3403 mod->init_ro_size, in complete_formation()
3404 mod->init_size); in complete_formation()
3408 mod->state = MODULE_STATE_COMING; in complete_formation()
3412 MODULE_STATE_COMING, mod); in complete_formation()
3423 struct module *mod = arg; in unknown_module_param_cb() local
3427 mod->async_probe_requested = true; in unknown_module_param_cb()
3443 struct module *mod; in load_module() local
3456 mod = layout_and_allocate(info, flags); in load_module()
3457 if (IS_ERR(mod)) { in load_module()
3458 err = PTR_ERR(mod); in load_module()
3463 err = add_unformed_module(mod); in load_module()
3468 mod->sig_ok = info->sig_ok; in load_module()
3469 if (!mod->sig_ok) { in load_module()
3472 "kernel\n", mod->name); in load_module()
3473 add_taint_module(mod, TAINT_UNSIGNED_MODULE, LOCKDEP_STILL_OK); in load_module()
3478 err = percpu_modalloc(mod, info); in load_module()
3483 err = module_unload_init(mod); in load_module()
3487 init_param_lock(mod); in load_module()
3491 err = find_module_sections(mod, info); in load_module()
3495 err = check_module_license_and_versions(mod); in load_module()
3500 setup_modinfo(mod, info); in load_module()
3503 err = simplify_symbols(mod, info); in load_module()
3507 err = apply_relocations(mod, info); in load_module()
3511 err = post_relocation(mod, info); in load_module()
3515 flush_module_icache(mod); in load_module()
3518 mod->args = strndup_user(uargs, ~0UL >> 1); in load_module()
3519 if (IS_ERR(mod->args)) { in load_module()
3520 err = PTR_ERR(mod->args); in load_module()
3527 ftrace_module_init(mod); in load_module()
3530 err = complete_formation(mod, info); in load_module()
3535 after_dashes = parse_args(mod->name, mod->args, mod->kp, mod->num_kp, in load_module()
3536 -32768, 32767, mod, in load_module()
3543 mod->name, after_dashes); in load_module()
3547 err = mod_sysfs_setup(mod, info, mod->kp, mod->num_kp); in load_module()
3555 trace_module_load(mod); in load_module()
3557 return do_init_module(mod); in load_module()
3562 module_bug_cleanup(mod); in load_module()
3566 MODULE_STATE_GOING, mod); in load_module()
3569 unset_module_init_ro_nx(mod); in load_module()
3570 unset_module_core_ro_nx(mod); in load_module()
3575 kfree(mod->args); in load_module()
3577 module_arch_cleanup(mod); in load_module()
3579 free_modinfo(mod); in load_module()
3581 module_unload_free(mod); in load_module()
3585 list_del_rcu(&mod->list); in load_module()
3586 mod_tree_remove(mod); in load_module()
3597 ftrace_release_mod(mod); in load_module()
3599 lockdep_free_key_range(mod->module_core, mod->core_size); in load_module()
3601 module_deallocate(mod, info); in load_module()
3672 static const char *get_ksymbol(struct module *mod, in get_ksymbol() argument
3679 struct mod_kallsyms *kallsyms = rcu_dereference_sched(mod->kallsyms); in get_ksymbol()
3682 if (within_module_init(addr, mod)) in get_ksymbol()
3683 nextval = (unsigned long)mod->module_init+mod->init_text_size; in get_ksymbol()
3685 nextval = (unsigned long)mod->module_core+mod->core_text_size; in get_ksymbol()
3726 struct module *mod; in module_address_lookup() local
3729 mod = __module_address(addr); in module_address_lookup()
3730 if (mod) { in module_address_lookup()
3732 *modname = mod->name; in module_address_lookup()
3733 ret = get_ksymbol(mod, addr, size, offset); in module_address_lookup()
3747 struct module *mod; in lookup_module_symbol_name() local
3750 list_for_each_entry_rcu(mod, &modules, list) { in lookup_module_symbol_name()
3751 if (mod->state == MODULE_STATE_UNFORMED) in lookup_module_symbol_name()
3753 if (within_module(addr, mod)) { in lookup_module_symbol_name()
3756 sym = get_ksymbol(mod, addr, NULL, NULL); in lookup_module_symbol_name()
3772 struct module *mod; in lookup_module_symbol_attrs() local
3775 list_for_each_entry_rcu(mod, &modules, list) { in lookup_module_symbol_attrs()
3776 if (mod->state == MODULE_STATE_UNFORMED) in lookup_module_symbol_attrs()
3778 if (within_module(addr, mod)) { in lookup_module_symbol_attrs()
3781 sym = get_ksymbol(mod, addr, size, offset); in lookup_module_symbol_attrs()
3785 strlcpy(modname, mod->name, MODULE_NAME_LEN); in lookup_module_symbol_attrs()
3800 struct module *mod; in module_get_kallsym() local
3803 list_for_each_entry_rcu(mod, &modules, list) { in module_get_kallsym()
3806 if (mod->state == MODULE_STATE_UNFORMED) in module_get_kallsym()
3808 kallsyms = rcu_dereference_sched(mod->kallsyms); in module_get_kallsym()
3813 strlcpy(module_name, mod->name, MODULE_NAME_LEN); in module_get_kallsym()
3814 *exported = is_exported(name, *value, mod); in module_get_kallsym()
3824 static unsigned long mod_find_symname(struct module *mod, const char *name) in mod_find_symname() argument
3827 struct mod_kallsyms *kallsyms = rcu_dereference_sched(mod->kallsyms); in mod_find_symname()
3839 struct module *mod; in module_kallsyms_lookup_name() local
3846 if ((mod = find_module_all(name, colon - name, false)) != NULL) in module_kallsyms_lookup_name()
3847 ret = mod_find_symname(mod, colon+1); in module_kallsyms_lookup_name()
3849 list_for_each_entry_rcu(mod, &modules, list) { in module_kallsyms_lookup_name()
3850 if (mod->state == MODULE_STATE_UNFORMED) in module_kallsyms_lookup_name()
3852 if ((ret = mod_find_symname(mod, name)) != 0) in module_kallsyms_lookup_name()
3864 struct module *mod; in module_kallsyms_on_each_symbol() local
3870 list_for_each_entry(mod, &modules, list) { in module_kallsyms_on_each_symbol()
3872 struct mod_kallsyms *kallsyms = mod->kallsyms; in module_kallsyms_on_each_symbol()
3874 if (mod->state == MODULE_STATE_UNFORMED) in module_kallsyms_on_each_symbol()
3878 mod, kallsyms->symtab[i].st_value); in module_kallsyms_on_each_symbol()
3887 static char *module_flags(struct module *mod, char *buf) in module_flags() argument
3891 BUG_ON(mod->state == MODULE_STATE_UNFORMED); in module_flags()
3892 if (mod->taints || in module_flags()
3893 mod->state == MODULE_STATE_GOING || in module_flags()
3894 mod->state == MODULE_STATE_COMING) { in module_flags()
3896 bx += module_flags_taint(mod, buf + bx); in module_flags()
3898 if (mod->state == MODULE_STATE_GOING) in module_flags()
3901 if (mod->state == MODULE_STATE_COMING) in module_flags()
3930 struct module *mod = list_entry(p, struct module, list); in m_show() local
3934 if (mod->state == MODULE_STATE_UNFORMED) in m_show()
3938 mod->name, mod->init_size + mod->core_size); in m_show()
3939 print_unload_info(m, mod); in m_show()
3943 mod->state == MODULE_STATE_GOING ? "Unloading" : in m_show()
3944 mod->state == MODULE_STATE_COMING ? "Loading" : in m_show()
3947 seq_printf(m, " 0x%pK", mod->module_core); in m_show()
3950 if (mod->taints) in m_show()
3951 seq_printf(m, " %s", module_flags(mod, buf)); in m_show()
3993 struct module *mod; in search_module_extables() local
3996 list_for_each_entry_rcu(mod, &modules, list) { in search_module_extables()
3997 if (mod->state == MODULE_STATE_UNFORMED) in search_module_extables()
3999 if (mod->num_exentries == 0) in search_module_extables()
4002 e = search_extable(mod->extable, in search_module_extables()
4003 mod->extable + mod->num_exentries - 1, in search_module_extables()
4042 struct module *mod; in __module_address() local
4049 mod = mod_find(addr); in __module_address()
4050 if (mod) { in __module_address()
4051 BUG_ON(!within_module(addr, mod)); in __module_address()
4052 if (mod->state == MODULE_STATE_UNFORMED) in __module_address()
4053 mod = NULL; in __module_address()
4055 return mod; in __module_address()
4087 struct module *mod = __module_address(addr); in __module_text_address() local
4088 if (mod) { in __module_text_address()
4090 if (!within(addr, mod->module_init, mod->init_text_size) in __module_text_address()
4091 && !within(addr, mod->module_core, mod->core_text_size)) in __module_text_address()
4092 mod = NULL; in __module_text_address()
4094 return mod; in __module_text_address()
4101 struct module *mod; in print_modules() local
4107 list_for_each_entry_rcu(mod, &modules, list) { in print_modules()
4108 if (mod->state == MODULE_STATE_UNFORMED) in print_modules()
4110 pr_cont(" %s%s", mod->name, module_flags(mod, buf)); in print_modules()
4121 void module_layout(struct module *mod, in module_layout() argument