x86: Use ELF fields defined in 'struct kimage'
authorLakshmi Ramasubramanian <nramas@linux.microsoft.com>
Sun, 21 Feb 2021 17:49:21 +0000 (09:49 -0800)
committerRob Herring <robh@kernel.org>
Mon, 8 Mar 2021 19:06:29 +0000 (12:06 -0700)
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
arch/x86/include/asm/kexec.h
arch/x86/kernel/crash.c
arch/x86/kernel/kexec-bzimage64.c
arch/x86/kernel/machine_kexec_64.c

index 6802c59..0a6e34b 100644 (file)
@@ -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 */
 
index a8f3af2..9d0722f 100644 (file)
@@ -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;
 }
index ce831f9..170d0fd 100644 (file)
@@ -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;
index a29a44a..055c18a 100644 (file)
@@ -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);