Lines Matching refs:pi
143 struct purgatory_info *pi = &image->purgatory_info; in kimage_file_post_load_cleanup() local
154 vfree(pi->purgatory_buf); in kimage_file_post_load_cleanup()
155 pi->purgatory_buf = NULL; in kimage_file_post_load_cleanup()
157 vfree(pi->sechdrs); in kimage_file_post_load_cleanup()
158 pi->sechdrs = NULL; in kimage_file_post_load_cleanup()
558 struct purgatory_info *pi = &image->purgatory_info; in kexec_calculate_store_digests() local
602 if (ksegment->kbuf == pi->purgatory_buf) in kexec_calculate_store_digests()
665 struct purgatory_info *pi = &image->purgatory_info; in __kexec_load_purgatory() local
678 sechdrs_c = (void *)pi->ehdr + pi->ehdr->e_shoff; in __kexec_load_purgatory()
687 sechdrs = vzalloc(pi->ehdr->e_shnum * sizeof(Elf_Shdr)); in __kexec_load_purgatory()
691 memcpy(sechdrs, sechdrs_c, pi->ehdr->e_shnum * sizeof(Elf_Shdr)); in __kexec_load_purgatory()
707 for (i = 0; i < pi->ehdr->e_shnum; i++) { in __kexec_load_purgatory()
711 sechdrs[i].sh_offset = (unsigned long)pi->ehdr + in __kexec_load_purgatory()
719 entry = pi->ehdr->e_entry; in __kexec_load_purgatory()
720 for (i = 0; i < pi->ehdr->e_shnum; i++) { in __kexec_load_purgatory()
728 if (sechdrs[i].sh_addr <= pi->ehdr->e_entry && in __kexec_load_purgatory()
730 pi->ehdr->e_entry)) { in __kexec_load_purgatory()
743 for (i = 0; i < pi->ehdr->e_shnum; i++) { in __kexec_load_purgatory()
782 &pi->purgatory_load_addr); in __kexec_load_purgatory()
788 load_addr = curr_load_addr = pi->purgatory_load_addr; in __kexec_load_purgatory()
791 for (i = 0; i < pi->ehdr->e_shnum; i++) { in __kexec_load_purgatory()
829 pi->sechdrs = sechdrs; in __kexec_load_purgatory()
835 pi->purgatory_buf = purgatory_buf; in __kexec_load_purgatory()
846 struct purgatory_info *pi = &image->purgatory_info; in kexec_apply_relocations() local
847 Elf_Shdr *sechdrs = pi->sechdrs; in kexec_apply_relocations()
850 for (i = 0; i < pi->ehdr->e_shnum; i++) { in kexec_apply_relocations()
863 if (sechdrs[i].sh_info >= pi->ehdr->e_shnum || in kexec_apply_relocations()
864 sechdrs[i].sh_link >= pi->ehdr->e_shnum) in kexec_apply_relocations()
877 if (symtab->sh_link >= pi->ehdr->e_shnum) in kexec_apply_relocations()
886 ret = arch_kexec_apply_relocations_add(pi->ehdr, in kexec_apply_relocations()
889 ret = arch_kexec_apply_relocations(pi->ehdr, in kexec_apply_relocations()
903 struct purgatory_info *pi = &image->purgatory_info; in kexec_load_purgatory() local
912 pi->ehdr = (Elf_Ehdr *)kexec_purgatory; in kexec_load_purgatory()
914 if (memcmp(pi->ehdr->e_ident, ELFMAG, SELFMAG) != 0 in kexec_load_purgatory()
915 || pi->ehdr->e_type != ET_REL in kexec_load_purgatory()
916 || !elf_check_arch(pi->ehdr) in kexec_load_purgatory()
917 || pi->ehdr->e_shentsize != sizeof(Elf_Shdr)) in kexec_load_purgatory()
920 if (pi->ehdr->e_shoff >= kexec_purgatory_size in kexec_load_purgatory()
921 || (pi->ehdr->e_shnum * sizeof(Elf_Shdr) > in kexec_load_purgatory()
922 kexec_purgatory_size - pi->ehdr->e_shoff)) in kexec_load_purgatory()
933 *load_addr = pi->purgatory_load_addr; in kexec_load_purgatory()
936 vfree(pi->sechdrs); in kexec_load_purgatory()
937 vfree(pi->purgatory_buf); in kexec_load_purgatory()
941 static Elf_Sym *kexec_purgatory_find_symbol(struct purgatory_info *pi, in kexec_purgatory_find_symbol() argument
950 if (!pi->sechdrs || !pi->ehdr) in kexec_purgatory_find_symbol()
953 sechdrs = pi->sechdrs; in kexec_purgatory_find_symbol()
954 ehdr = pi->ehdr; in kexec_purgatory_find_symbol()
991 struct purgatory_info *pi = &image->purgatory_info; in kexec_purgatory_get_symbol_addr() local
995 sym = kexec_purgatory_find_symbol(pi, name); in kexec_purgatory_get_symbol_addr()
999 sechdr = &pi->sechdrs[sym->st_shndx]; in kexec_purgatory_get_symbol_addr()
1017 struct purgatory_info *pi = &image->purgatory_info; in kexec_purgatory_get_set_symbol() local
1020 sym = kexec_purgatory_find_symbol(pi, name); in kexec_purgatory_get_set_symbol()
1030 sechdrs = pi->sechdrs; in kexec_purgatory_get_set_symbol()