summaryrefslogtreecommitdiff
path: root/Kernel/Prekernel
diff options
context:
space:
mode:
authorGunnar Beutner <gbeutner@serenityos.org>2021-07-19 16:21:59 +0200
committerAndreas Kling <kling@serenityos.org>2021-07-19 17:47:54 +0200
commit3678f78bfbb246333b26e793d0c752c31ee2ee37 (patch)
tree314d0ddd823d357a33f6ddaa1f17cd94f4378942 /Kernel/Prekernel
parent157fccfe7b381b5d11b6288759769b59ae1f3631 (diff)
downloadserenity-3678f78bfbb246333b26e793d0c752c31ee2ee37.zip
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.
Diffstat (limited to 'Kernel/Prekernel')
-rw-r--r--Kernel/Prekernel/init.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/Kernel/Prekernel/init.cpp b/Kernel/Prekernel/init.cpp
index f87b7bfd92..60f483ea40 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;