Lines Matching refs:info
236 static unsigned int find_sec(const struct load_info *info, const char *name) in find_sec() argument
240 for (i = 1; i < info->hdr->e_shnum; i++) { in find_sec()
241 Elf_Shdr *shdr = &info->sechdrs[i]; in find_sec()
244 && strcmp(info->secstrings + shdr->sh_name, name) == 0) in find_sec()
260 static int find_any_unique_sec(const struct load_info *info, const char *name) in find_any_unique_sec() argument
266 for (i = 1; i < info->hdr->e_shnum; i++) { in find_any_unique_sec()
267 if (strcmp(info->secstrings + info->sechdrs[i].sh_name, in find_any_unique_sec()
283 static void *section_addr(const struct load_info *info, const char *name) in section_addr() argument
286 return (void *)info->sechdrs[find_sec(info, name)].sh_addr; in section_addr()
290 static void *section_objs(const struct load_info *info, in section_objs() argument
295 unsigned int sec = find_sec(info, name); in section_objs()
298 *num = info->sechdrs[sec].sh_size / object_size; in section_objs()
299 return (void *)info->sechdrs[sec].sh_addr; in section_objs()
303 static unsigned int find_any_sec(const struct load_info *info, const char *name) in find_any_sec() argument
307 for (i = 1; i < info->hdr->e_shnum; i++) { in find_any_sec()
308 Elf_Shdr *shdr = &info->sechdrs[i]; in find_any_sec()
309 if (strcmp(info->secstrings + shdr->sh_name, name) == 0) in find_any_sec()
319 static __maybe_unused void *any_section_objs(const struct load_info *info, in any_section_objs() argument
324 unsigned int sec = find_any_sec(info, name); in any_section_objs()
327 *num = info->sechdrs[sec].sh_size / object_size; in any_section_objs()
328 return (void *)info->sechdrs[sec].sh_addr; in any_section_objs()
457 static int percpu_modalloc(struct module *mod, struct load_info *info) in percpu_modalloc() argument
459 Elf_Shdr *pcpusec = &info->sechdrs[info->index.pcpu]; in percpu_modalloc()
486 static unsigned int find_pcpusec(struct load_info *info) in find_pcpusec() argument
488 return find_sec(info, ".data..percpu"); in find_pcpusec()
548 static int percpu_modalloc(struct module *mod, struct load_info *info) in percpu_modalloc() argument
551 if (info->sechdrs[info->index.pcpu].sh_size != 0) in percpu_modalloc()
558 static unsigned int find_pcpusec(struct load_info *info) in find_pcpusec() argument
1109 static char *get_next_modinfo(const struct load_info *info, const char *tag, in get_next_modinfo() argument
1114 Elf_Shdr *infosec = &info->sechdrs[info->index.info]; in get_next_modinfo()
1121 char *modinfo = (char *)info->hdr + infosec->sh_offset; in get_next_modinfo()
1135 static char *get_modinfo(const struct load_info *info, const char *tag) in get_modinfo() argument
1137 return get_next_modinfo(info, tag, NULL); in get_modinfo()
1180 static int verify_namespace_is_imported(const struct load_info *info, in verify_namespace_is_imported() argument
1193 for_each_modinfo_entry(imported_namespace, info, "import_ns") { in verify_namespace_is_imported()
1232 const struct load_info *info, in resolve_symbol() argument
1261 if (!check_version(info, name, mod, fsa.crc)) { in resolve_symbol()
1266 err = verify_namespace_is_imported(info, fsa.sym, mod); in resolve_symbol()
1288 const struct load_info *info, in resolve_symbol_wait() argument
1295 !IS_ERR(ksym = resolve_symbol(mod, info, name, owner)) in resolve_symbol_wait()
1513 static int simplify_symbols(struct module *mod, const struct load_info *info) in simplify_symbols() argument
1515 Elf_Shdr *symsec = &info->sechdrs[info->index.sym]; in simplify_symbols()
1523 const char *name = info->strtab + sym[i].st_name; in simplify_symbols()
1552 ksym = resolve_symbol_wait(mod, info, name); in simplify_symbols()
1562 ignore_undef_symbol(info->hdr->e_machine, name))) in simplify_symbols()
1572 if (sym[i].st_shndx == info->index.pcpu) in simplify_symbols()
1575 secbase = info->sechdrs[sym[i].st_shndx].sh_addr; in simplify_symbols()
1584 static int apply_relocations(struct module *mod, const struct load_info *info) in apply_relocations() argument
1590 for (i = 1; i < info->hdr->e_shnum; i++) { in apply_relocations()
1591 unsigned int infosec = info->sechdrs[i].sh_info; in apply_relocations()
1594 if (infosec >= info->hdr->e_shnum) in apply_relocations()
1603 if (!(info->sechdrs[infosec].sh_flags & SHF_ALLOC) && in apply_relocations()
1604 (!infosec || infosec != info->index.pcpu)) in apply_relocations()
1607 if (info->sechdrs[i].sh_flags & SHF_RELA_LIVEPATCH) in apply_relocations()
1608 err = klp_apply_section_relocs(mod, info->sechdrs, in apply_relocations()
1609 info->secstrings, in apply_relocations()
1610 info->strtab, in apply_relocations()
1611 info->index.sym, i, in apply_relocations()
1613 else if (info->sechdrs[i].sh_type == SHT_REL) in apply_relocations()
1614 err = apply_relocate(info->sechdrs, info->strtab, in apply_relocations()
1615 info->index.sym, i, mod); in apply_relocations()
1616 else if (info->sechdrs[i].sh_type == SHT_RELA) in apply_relocations()
1617 err = apply_relocate_add(info->sechdrs, info->strtab, in apply_relocations()
1618 info->index.sym, i, mod); in apply_relocations()
1656 static void __layout_sections(struct module *mod, struct load_info *info, bool is_init) in __layout_sections() argument
1689 for (i = 0; i < info->hdr->e_shnum; ++i) { in __layout_sections()
1690 Elf_Shdr *s = &info->sechdrs[i]; in __layout_sections()
1691 const char *sname = info->secstrings + s->sh_name; in __layout_sections()
1728 static void layout_sections(struct module *mod, struct load_info *info) in layout_sections() argument
1732 for (i = 0; i < info->hdr->e_shnum; i++) in layout_sections()
1733 info->sechdrs[i].sh_entsize = ~0UL; in layout_sections()
1736 __layout_sections(mod, info, false); in layout_sections()
1739 __layout_sections(mod, info, true); in layout_sections()
1756 static int setup_modinfo(struct module *mod, struct load_info *info) in setup_modinfo() argument
1764 attr->setup(mod, get_modinfo(info, attr->attr.name)); in setup_modinfo()
1767 for_each_modinfo_entry(imported_namespace, info, "import_ns") { in setup_modinfo()
1803 static int validate_section_offset(const struct load_info *info, Elf_Shdr *shdr) in validate_section_offset() argument
1816 if (secend < shdr->sh_offset || secend > info->len) in validate_section_offset()
1838 static int elf_validity_ehdr(const struct load_info *info) in elf_validity_ehdr() argument
1840 if (info->len < sizeof(*(info->hdr))) { in elf_validity_ehdr()
1841 pr_err("Invalid ELF header len %lu\n", info->len); in elf_validity_ehdr()
1844 if (memcmp(info->hdr->e_ident, ELFMAG, SELFMAG) != 0) { in elf_validity_ehdr()
1848 if (info->hdr->e_type != ET_REL) { in elf_validity_ehdr()
1850 info->hdr->e_type, ET_REL); in elf_validity_ehdr()
1853 if (!elf_check_arch(info->hdr)) { in elf_validity_ehdr()
1855 info->hdr->e_machine); in elf_validity_ehdr()
1858 if (!module_elf_check_arch(info->hdr)) { in elf_validity_ehdr()
1860 info->hdr->e_machine); in elf_validity_ehdr()
1882 static int elf_validity_cache_sechdrs(struct load_info *info) in elf_validity_cache_sechdrs() argument
1889 err = elf_validity_ehdr(info); in elf_validity_cache_sechdrs()
1893 if (info->hdr->e_shentsize != sizeof(Elf_Shdr)) { in elf_validity_cache_sechdrs()
1903 if (info->hdr->e_shoff >= info->len in elf_validity_cache_sechdrs()
1904 || (info->hdr->e_shnum * sizeof(Elf_Shdr) > in elf_validity_cache_sechdrs()
1905 info->len - info->hdr->e_shoff)) { in elf_validity_cache_sechdrs()
1910 sechdrs = (void *)info->hdr + info->hdr->e_shoff; in elf_validity_cache_sechdrs()
1925 for (i = 1; i < info->hdr->e_shnum; i++) { in elf_validity_cache_sechdrs()
1933 err = validate_section_offset(info, shdr); in elf_validity_cache_sechdrs()
1942 info->sechdrs = sechdrs; in elf_validity_cache_sechdrs()
1962 static int elf_validity_cache_secstrings(struct load_info *info) in elf_validity_cache_secstrings() argument
1971 if (info->hdr->e_shstrndx == SHN_UNDEF in elf_validity_cache_secstrings()
1972 || info->hdr->e_shstrndx >= info->hdr->e_shnum) { in elf_validity_cache_secstrings()
1974 info->hdr->e_shstrndx, info->hdr->e_shstrndx, in elf_validity_cache_secstrings()
1975 info->hdr->e_shnum); in elf_validity_cache_secstrings()
1979 strhdr = &info->sechdrs[info->hdr->e_shstrndx]; in elf_validity_cache_secstrings()
1986 secstrings = (void *)info->hdr + strhdr->sh_offset; in elf_validity_cache_secstrings()
1996 for (i = 0; i < info->hdr->e_shnum; i++) { in elf_validity_cache_secstrings()
1997 shdr = &info->sechdrs[i]; in elf_validity_cache_secstrings()
2008 info->secstrings = secstrings; in elf_validity_cache_secstrings()
2023 static int elf_validity_cache_index_info(struct load_info *info) in elf_validity_cache_index_info() argument
2027 info_idx = find_any_unique_sec(info, ".modinfo"); in elf_validity_cache_index_info()
2038 info->index.info = info_idx; in elf_validity_cache_index_info()
2040 info->name = get_modinfo(info, "name"); in elf_validity_cache_index_info()
2069 static int elf_validity_cache_index_mod(struct load_info *info) in elf_validity_cache_index_mod() argument
2074 mod_idx = find_any_unique_sec(info, ".gnu.linkonce.this_module"); in elf_validity_cache_index_mod()
2077 info->name ?: "(missing .modinfo section or name field)"); in elf_validity_cache_index_mod()
2081 shdr = &info->sechdrs[mod_idx]; in elf_validity_cache_index_mod()
2085 info->name ?: "(missing .modinfo section or name field)"); in elf_validity_cache_index_mod()
2091 info->name ?: "(missing .modinfo section or name field)"); in elf_validity_cache_index_mod()
2097 info->name ?: "(missing .modinfo section or name field)"); in elf_validity_cache_index_mod()
2101 info->index.mod = mod_idx; in elf_validity_cache_index_mod()
2116 static int elf_validity_cache_index_sym(struct load_info *info) in elf_validity_cache_index_sym() argument
2122 for (i = 1; i < info->hdr->e_shnum; i++) { in elf_validity_cache_index_sym()
2123 if (info->sechdrs[i].sh_type == SHT_SYMTAB) { in elf_validity_cache_index_sym()
2131 info->name ?: "(missing .modinfo section or name field)"); in elf_validity_cache_index_sym()
2135 info->index.sym = sym_idx; in elf_validity_cache_index_sym()
2151 static int elf_validity_cache_index_str(struct load_info *info) in elf_validity_cache_index_str() argument
2153 unsigned int str_idx = info->sechdrs[info->index.sym].sh_link; in elf_validity_cache_index_str()
2155 if (str_idx == SHN_UNDEF || str_idx >= info->hdr->e_shnum) { in elf_validity_cache_index_str()
2157 str_idx, str_idx, info->hdr->e_shnum); in elf_validity_cache_index_str()
2161 info->index.str = str_idx; in elf_validity_cache_index_str()
2188 static int elf_validity_cache_index_versions(struct load_info *info, int flags) in elf_validity_cache_index_versions() argument
2199 info->index.vers = 0; in elf_validity_cache_index_versions()
2200 info->index.vers_ext_crc = 0; in elf_validity_cache_index_versions()
2201 info->index.vers_ext_name = 0; in elf_validity_cache_index_versions()
2205 vers_ext_crc = find_sec(info, "__version_ext_crcs"); in elf_validity_cache_index_versions()
2206 vers_ext_name = find_sec(info, "__version_ext_names"); in elf_validity_cache_index_versions()
2219 crc_count = info->sechdrs[vers_ext_crc].sh_size / sizeof(u32); in elf_validity_cache_index_versions()
2220 name = (void *)info->hdr + in elf_validity_cache_index_versions()
2221 info->sechdrs[vers_ext_name].sh_offset; in elf_validity_cache_index_versions()
2222 remaining_len = info->sechdrs[vers_ext_name].sh_size; in elf_validity_cache_index_versions()
2235 info->index.vers = find_sec(info, "__versions"); in elf_validity_cache_index_versions()
2236 info->index.vers_ext_crc = vers_ext_crc; in elf_validity_cache_index_versions()
2237 info->index.vers_ext_name = vers_ext_name; in elf_validity_cache_index_versions()
2262 static int elf_validity_cache_index(struct load_info *info, int flags) in elf_validity_cache_index() argument
2266 err = elf_validity_cache_index_info(info); in elf_validity_cache_index()
2269 err = elf_validity_cache_index_mod(info); in elf_validity_cache_index()
2272 err = elf_validity_cache_index_sym(info); in elf_validity_cache_index()
2275 err = elf_validity_cache_index_str(info); in elf_validity_cache_index()
2278 err = elf_validity_cache_index_versions(info, flags); in elf_validity_cache_index()
2282 info->index.pcpu = find_pcpusec(info); in elf_validity_cache_index()
2304 static int elf_validity_cache_strtab(struct load_info *info) in elf_validity_cache_strtab() argument
2306 Elf_Shdr *str_shdr = &info->sechdrs[info->index.str]; in elf_validity_cache_strtab()
2307 Elf_Shdr *sym_shdr = &info->sechdrs[info->index.sym]; in elf_validity_cache_strtab()
2308 char *strtab = (char *)info->hdr + str_shdr->sh_offset; in elf_validity_cache_strtab()
2309 Elf_Sym *syms = (void *)info->hdr + sym_shdr->sh_offset; in elf_validity_cache_strtab()
2336 info->strtab = strtab; in elf_validity_cache_strtab()
2360 static int elf_validity_cache_copy(struct load_info *info, int flags) in elf_validity_cache_copy() argument
2364 err = elf_validity_cache_sechdrs(info); in elf_validity_cache_copy()
2367 err = elf_validity_cache_secstrings(info); in elf_validity_cache_copy()
2370 err = elf_validity_cache_index(info, flags); in elf_validity_cache_copy()
2373 err = elf_validity_cache_strtab(info); in elf_validity_cache_copy()
2378 info->mod = (void *)info->hdr + info->sechdrs[info->index.mod].sh_offset; in elf_validity_cache_copy()
2384 if (!info->name) in elf_validity_cache_copy()
2385 info->name = info->mod->name; in elf_validity_cache_copy()
2407 static int check_modinfo_livepatch(struct module *mod, struct load_info *info) in check_modinfo_livepatch() argument
2409 if (!get_modinfo(info, "livepatch")) in check_modinfo_livepatch()
2421 static void check_modinfo_retpoline(struct module *mod, struct load_info *info) in check_modinfo_retpoline() argument
2423 if (retpoline_module_ok(get_modinfo(info, "retpoline"))) in check_modinfo_retpoline()
2432 struct load_info *info) in copy_module_from_user() argument
2436 info->len = len; in copy_module_from_user()
2437 if (info->len < sizeof(*(info->hdr))) in copy_module_from_user()
2445 info->hdr = __vmalloc(info->len, GFP_KERNEL | __GFP_NOWARN); in copy_module_from_user()
2446 if (!info->hdr) in copy_module_from_user()
2449 if (copy_chunked_from_user(info->hdr, umod, info->len) != 0) { in copy_module_from_user()
2454 err = security_kernel_post_load_data((char *)info->hdr, info->len, in copy_module_from_user()
2458 vfree(info->hdr); in copy_module_from_user()
2463 static void free_copy(struct load_info *info, int flags) in free_copy() argument
2466 module_decompress_cleanup(info); in free_copy()
2468 vfree(info->hdr); in free_copy()
2471 static int rewrite_section_headers(struct load_info *info, int flags) in rewrite_section_headers() argument
2476 info->sechdrs[0].sh_addr = 0; in rewrite_section_headers()
2478 for (i = 1; i < info->hdr->e_shnum; i++) { in rewrite_section_headers()
2479 Elf_Shdr *shdr = &info->sechdrs[i]; in rewrite_section_headers()
2485 shdr->sh_addr = (size_t)info->hdr + shdr->sh_offset; in rewrite_section_headers()
2490 info->sechdrs[info->index.vers].sh_flags &= ~(unsigned long)SHF_ALLOC; in rewrite_section_headers()
2491 info->sechdrs[info->index.vers_ext_crc].sh_flags &= in rewrite_section_headers()
2493 info->sechdrs[info->index.vers_ext_name].sh_flags &= in rewrite_section_headers()
2495 info->sechdrs[info->index.info].sh_flags &= ~(unsigned long)SHF_ALLOC; in rewrite_section_headers()
2510 static void module_augment_kernel_taints(struct module *mod, struct load_info *info) in module_augment_kernel_taints() argument
2515 if (!get_modinfo(info, "intree")) { in module_augment_kernel_taints()
2522 check_modinfo_retpoline(mod, info); in module_augment_kernel_taints()
2524 if (get_modinfo(info, "staging")) { in module_augment_kernel_taints()
2536 module_license_taint_check(mod, get_modinfo(info, "license")); in module_augment_kernel_taints()
2538 if (get_modinfo(info, "test")) { in module_augment_kernel_taints()
2545 mod->sig_ok = info->sig_ok; in module_augment_kernel_taints()
2573 static int check_modinfo(struct module *mod, struct load_info *info, int flags) in check_modinfo() argument
2575 const char *modmagic = get_modinfo(info, "vermagic"); in check_modinfo()
2586 } else if (!same_magic(modmagic, vermagic, info->index.vers)) { in check_modinfo()
2588 info->name, modmagic, vermagic); in check_modinfo()
2592 err = check_modinfo_livepatch(mod, info); in check_modinfo()
2599 static int find_module_sections(struct module *mod, struct load_info *info) in find_module_sections() argument
2601 mod->kp = section_objs(info, "__param", in find_module_sections()
2603 mod->syms = section_objs(info, "__ksymtab", in find_module_sections()
2605 mod->crcs = section_addr(info, "__kcrctab"); in find_module_sections()
2606 mod->gpl_syms = section_objs(info, "__ksymtab_gpl", in find_module_sections()
2609 mod->gpl_crcs = section_addr(info, "__kcrctab_gpl"); in find_module_sections()
2612 mod->ctors = section_objs(info, ".ctors", in find_module_sections()
2615 mod->ctors = section_objs(info, ".init_array", in find_module_sections()
2617 else if (find_sec(info, ".init_array")) { in find_module_sections()
2628 mod->noinstr_text_start = section_objs(info, ".noinstr.text", 1, in find_module_sections()
2632 mod->tracepoints_ptrs = section_objs(info, "__tracepoints_ptrs", in find_module_sections()
2637 mod->srcu_struct_ptrs = section_objs(info, "___srcu_struct_ptrs", in find_module_sections()
2642 mod->bpf_raw_events = section_objs(info, "__bpf_raw_tp_map", in find_module_sections()
2647 mod->btf_data = any_section_objs(info, ".BTF", 1, &mod->btf_data_size); in find_module_sections()
2648 mod->btf_base_data = any_section_objs(info, ".BTF.base", 1, in find_module_sections()
2652 mod->jump_entries = section_objs(info, "__jump_table", in find_module_sections()
2657 mod->trace_events = section_objs(info, "_ftrace_events", in find_module_sections()
2660 mod->trace_evals = section_objs(info, "_ftrace_eval_map", in find_module_sections()
2665 mod->trace_bprintk_fmt_start = section_objs(info, "__trace_printk_fmt", in find_module_sections()
2671 mod->ftrace_callsites = section_objs(info, FTRACE_CALLSITE_SECTION, in find_module_sections()
2676 mod->ei_funcs = section_objs(info, "_error_injection_whitelist", in find_module_sections()
2681 mod->kprobes_text_start = section_objs(info, ".kprobes.text", 1, in find_module_sections()
2683 mod->kprobe_blacklist = section_objs(info, "_kprobe_blacklist", in find_module_sections()
2688 mod->printk_index_start = section_objs(info, ".printk_index", in find_module_sections()
2693 mod->static_call_sites = section_objs(info, ".static_call_sites", in find_module_sections()
2698 mod->kunit_suites = section_objs(info, ".kunit_test_suites", in find_module_sections()
2701 mod->kunit_init_suites = section_objs(info, ".kunit_init_test_suites", in find_module_sections()
2706 mod->extable = section_objs(info, "__ex_table", in find_module_sections()
2709 if (section_addr(info, "__obsparm")) in find_module_sections()
2713 mod->dyndbg_info.descs = section_objs(info, "__dyndbg", in find_module_sections()
2716 mod->dyndbg_info.classes = section_objs(info, "__dyndbg_classes", in find_module_sections()
2724 static int move_module(struct module *mod, struct load_info *info) in move_module() argument
2745 for (i = 0; i < info->hdr->e_shnum; i++) { in move_module()
2747 Elf_Shdr *shdr = &info->sechdrs[i]; in move_module()
2753 sname = info->secstrings + shdr->sh_name; in move_module()
2784 if (i == info->index.mod && in move_module()
2799 (long)shdr->sh_size, info->secstrings + shdr->sh_name); in move_module()
2876 static struct module *layout_and_allocate(struct load_info *info, int flags) in layout_and_allocate() argument
2882 err = module_frob_arch_sections(info->hdr, info->sechdrs, in layout_and_allocate()
2883 info->secstrings, info->mod); in layout_and_allocate()
2887 err = module_enforce_rwx_sections(info->hdr, info->sechdrs, in layout_and_allocate()
2888 info->secstrings, info->mod); in layout_and_allocate()
2893 info->sechdrs[info->index.pcpu].sh_flags &= ~(unsigned long)SHF_ALLOC; in layout_and_allocate()
2900 module_mark_ro_after_init(info->hdr, info->sechdrs, info->secstrings); in layout_and_allocate()
2907 layout_sections(info->mod, info); in layout_and_allocate()
2908 layout_symtab(info->mod, info); in layout_and_allocate()
2911 err = move_module(info->mod, info); in layout_and_allocate()
2916 mod = (void *)info->sechdrs[info->index.mod].sh_addr; in layout_and_allocate()
2917 kmemleak_load_module(mod, info); in layout_and_allocate()
2918 codetag_module_replaced(info->mod, mod); in layout_and_allocate()
2924 static void module_deallocate(struct module *mod, struct load_info *info) in module_deallocate() argument
2940 static int post_relocation(struct module *mod, const struct load_info *info) in post_relocation() argument
2946 percpu_modcopy(mod, (void *)info->sechdrs[info->index.pcpu].sh_addr, in post_relocation()
2947 info->sechdrs[info->index.pcpu].sh_size); in post_relocation()
2950 add_kallsyms(mod, info); in post_relocation()
2953 return module_finalize(info->hdr, info->sechdrs, mod); in post_relocation()
3236 static int complete_formation(struct module *mod, struct load_info *info) in complete_formation() argument
3248 module_bug_finalize(info->hdr, info->sechdrs, mod); in complete_formation()
3249 module_cfi_finalize(info->hdr, info->sechdrs, mod); in complete_formation()
3315 static int early_mod_check(struct load_info *info, int flags) in early_mod_check() argument
3323 if (blacklisted(info->name)) { in early_mod_check()
3324 pr_err("Module %s is blacklisted\n", info->name); in early_mod_check()
3328 err = rewrite_section_headers(info, flags); in early_mod_check()
3333 if (!check_modstruct_version(info, info->mod)) in early_mod_check()
3336 err = check_modinfo(info->mod, info, flags); in early_mod_check()
3341 err = module_patient_check_exists(info->mod->name, FAIL_DUP_MOD_BECOMING); in early_mod_check()
3351 static int load_module(struct load_info *info, const char __user *uargs, in load_module() argument
3371 err = module_sig_check(info, flags); in load_module()
3380 err = elf_validity_cache_copy(info, flags); in load_module()
3384 err = early_mod_check(info, flags); in load_module()
3389 mod = layout_and_allocate(info, flags); in load_module()
3397 audit_log_kern_module(info->name); in load_module()
3408 module_augment_kernel_taints(mod, info); in load_module()
3411 err = percpu_modalloc(mod, info); in load_module()
3426 err = find_module_sections(mod, info); in load_module()
3435 err = setup_modinfo(mod, info); in load_module()
3440 err = simplify_symbols(mod, info); in load_module()
3444 err = apply_relocations(mod, info); in load_module()
3448 err = post_relocation(mod, info); in load_module()
3461 init_build_id(mod, info); in load_module()
3467 err = complete_formation(mod, info); in load_module()
3490 err = mod_sysfs_setup(mod, info, mod->kp, mod->num_kp); in load_module()
3495 err = copy_module_elf(mod, info); in load_module()
3504 free_copy(info, flags); in load_module()
3546 mod_stat_bump_invalid(info, flags); in load_module()
3554 module_deallocate(mod, info); in load_module()
3562 audit_log_kern_module(info->name ? info->name : "?"); in load_module()
3563 mod_stat_bump_becoming(info, flags); in load_module()
3565 free_copy(info, flags); in load_module()
3573 struct load_info info = { }; in SYSCALL_DEFINE3() local
3582 err = copy_module_from_user(umod, len, &info); in SYSCALL_DEFINE3()
3589 return load_module(&info, uargs, 0); in SYSCALL_DEFINE3()
3678 struct load_info info = { }; in init_module_from_file() local
3689 int err = module_decompress(&info, buf, len); in init_module_from_file()
3697 info.hdr = buf; in init_module_from_file()
3698 info.len = len; in init_module_from_file()
3701 return load_module(&info, uargs, flags); in init_module_from_file()