diff options
author | Gunnar Beutner <gbeutner@serenityos.org> | 2021-07-19 16:21:59 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-07-19 17:47:54 +0200 |
commit | 3678f78bfbb246333b26e793d0c752c31ee2ee37 (patch) | |
tree | 314d0ddd823d357a33f6ddaa1f17cd94f4378942 /Kernel/Prekernel | |
parent | 157fccfe7b381b5d11b6288759769b59ae1f3631 (diff) | |
download | serenity-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.cpp | 2 |
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; |