From 3678f78bfbb246333b26e793d0c752c31ee2ee37 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Mon, 19 Jul 2021 16:21:59 +0200 Subject: [PATCH] Prekernel: Make sure the last few bytes of the kernel image are mapped Depending on the exact layout of the .ksyms section the kernel would fail to boot because the kernel_load_end variable didn't account for the section's size. --- Kernel/Prekernel/init.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kernel/Prekernel/init.cpp b/Kernel/Prekernel/init.cpp index f87b7bfd928..60f483ea402 100644 --- a/Kernel/Prekernel/init.cpp +++ b/Kernel/Prekernel/init.cpp @@ -72,7 +72,7 @@ extern "C" [[noreturn]] void init() ElfW(Phdr)* kernel_program_headers = (ElfW(Phdr*))((char*)kernel_elf_header + kernel_elf_header->e_phoff); FlatPtr kernel_load_base = kernel_program_headers[0].p_vaddr; - FlatPtr kernel_load_end = kernel_program_headers[kernel_elf_header->e_phnum - 1].p_vaddr; + FlatPtr kernel_load_end = kernel_program_headers[kernel_elf_header->e_phnum - 1].p_vaddr + kernel_program_headers[kernel_elf_header->e_phnum - 1].p_memsz; // align to 1GB kernel_load_base &= ~(FlatPtr)0x3fffffff;