summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2022-11-22 14:51:22 +0300
committerBorislav Petkov (AMD) <bp@alien8.de>2023-01-02 20:56:21 +0300
commitd00dd2f2645dca04cf399d8fc692f3f69b6dd996 (patch)
treec00fb3eb128924a529b247d67797890549159517 /arch
parent88603b6dc419445847923fcb7fe5080067a30f98 (diff)
downloadlinux-d00dd2f2645dca04cf399d8fc692f3f69b6dd996.tar.xz
x86/kexec: Fix double-free of elf header buffer
After b3e34a47f989 ("x86/kexec: fix memory leak of elf header buffer"), freeing image->elf_headers in the error path of crash_load_segments() is not needed because kimage_file_post_load_cleanup() will take care of that later. And not clearing it could result in a double-free. Drop the superfluous vfree() call at the error path of crash_load_segments(). Fixes: b3e34a47f989 ("x86/kexec: fix memory leak of elf header buffer") Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Acked-by: Baoquan He <bhe@redhat.com> Acked-by: Vlastimil Babka <vbabka@suse.cz> Cc: <stable@kernel.org> Link: https://lore.kernel.org/r/20221122115122.13937-1-tiwai@suse.de
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kernel/crash.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
index 9730c88530fc..305514431f26 100644
--- a/arch/x86/kernel/crash.c
+++ b/arch/x86/kernel/crash.c
@@ -401,10 +401,8 @@ int crash_load_segments(struct kimage *image)
kbuf.buf_align = ELF_CORE_HEADER_ALIGN;
kbuf.mem = KEXEC_BUF_MEM_UNKNOWN;
ret = kexec_add_buffer(&kbuf);
- if (ret) {
- vfree((void *)image->elf_headers);
+ if (ret)
return ret;
- }
image->elf_load_addr = kbuf.mem;
pr_debug("Loaded ELF headers at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
image->elf_load_addr, kbuf.bufsz, kbuf.memsz);