forked from Minki/linux
x86: Use ELF fields defined in 'struct kimage'
ELF related fields elf_headers, elf_headers_sz, and elf_load_addr have been moved from 'struct kimage_arch' to 'struct kimage'. Use the ELF fields defined in 'struct kimage'. Suggested-by: Rob Herring <robh@kernel.org> Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Lakshmi Ramasubramanian <nramas@linux.microsoft.com> Signed-off-by: Rob Herring <robh@kernel.org> Link: https://lore.kernel.org/r/20210221174930.27324-5-nramas@linux.microsoft.com
This commit is contained in:
parent
e6635bab53
commit
179350f00e
@ -150,11 +150,6 @@ struct kimage_arch {
|
||||
pud_t *pud;
|
||||
pmd_t *pmd;
|
||||
pte_t *pte;
|
||||
|
||||
/* Core ELF header buffer */
|
||||
void *elf_headers;
|
||||
unsigned long elf_headers_sz;
|
||||
unsigned long elf_load_addr;
|
||||
};
|
||||
#endif /* CONFIG_X86_32 */
|
||||
|
||||
|
@ -323,8 +323,8 @@ static int memmap_exclude_ranges(struct kimage *image, struct crash_mem *cmem,
|
||||
cmem->nr_ranges = 1;
|
||||
|
||||
/* Exclude elf header region */
|
||||
start = image->arch.elf_load_addr;
|
||||
end = start + image->arch.elf_headers_sz - 1;
|
||||
start = image->elf_load_addr;
|
||||
end = start + image->elf_headers_sz - 1;
|
||||
return crash_exclude_mem_range(cmem, start, end);
|
||||
}
|
||||
|
||||
@ -407,20 +407,20 @@ int crash_load_segments(struct kimage *image)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
image->arch.elf_headers = kbuf.buffer;
|
||||
image->arch.elf_headers_sz = kbuf.bufsz;
|
||||
image->elf_headers = kbuf.buffer;
|
||||
image->elf_headers_sz = kbuf.bufsz;
|
||||
|
||||
kbuf.memsz = kbuf.bufsz;
|
||||
kbuf.buf_align = ELF_CORE_HEADER_ALIGN;
|
||||
kbuf.mem = KEXEC_BUF_MEM_UNKNOWN;
|
||||
ret = kexec_add_buffer(&kbuf);
|
||||
if (ret) {
|
||||
vfree((void *)image->arch.elf_headers);
|
||||
vfree((void *)image->elf_headers);
|
||||
return ret;
|
||||
}
|
||||
image->arch.elf_load_addr = kbuf.mem;
|
||||
image->elf_load_addr = kbuf.mem;
|
||||
pr_debug("Loaded ELF headers at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
|
||||
image->arch.elf_load_addr, kbuf.bufsz, kbuf.bufsz);
|
||||
image->elf_load_addr, kbuf.bufsz, kbuf.bufsz);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ static int setup_cmdline(struct kimage *image, struct boot_params *params,
|
||||
|
||||
if (image->type == KEXEC_TYPE_CRASH) {
|
||||
len = sprintf(cmdline_ptr,
|
||||
"elfcorehdr=0x%lx ", image->arch.elf_load_addr);
|
||||
"elfcorehdr=0x%lx ", image->elf_load_addr);
|
||||
}
|
||||
memcpy(cmdline_ptr + len, cmdline, cmdline_len);
|
||||
cmdline_len += len;
|
||||
|
@ -402,8 +402,8 @@ void machine_kexec(struct kimage *image)
|
||||
#ifdef CONFIG_KEXEC_FILE
|
||||
void *arch_kexec_kernel_image_load(struct kimage *image)
|
||||
{
|
||||
vfree(image->arch.elf_headers);
|
||||
image->arch.elf_headers = NULL;
|
||||
vfree(image->elf_headers);
|
||||
image->elf_headers = NULL;
|
||||
|
||||
if (!image->fops || !image->fops->load)
|
||||
return ERR_PTR(-ENOEXEC);
|
||||
|
Loading…
Reference in New Issue
Block a user