1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 10:48:11 +00:00

Kernel: Use the whole kernel PD range when randomizing the KASLR offset

Now that we reclaim the memory range that is created by KASLR before
the start of the kernel image, there's no need to be conservative with
the KASLR offset.
This commit is contained in:
Idan Horowitz 2022-03-22 19:10:17 +02:00 committed by Idan Horowitz
parent e0c7727934
commit f0166efe8c
6 changed files with 5 additions and 8 deletions

View file

@ -97,7 +97,7 @@ extern "C" [[noreturn]] void init()
#endif
// KASLR
static constexpr auto maximum_offset = 256 * MiB;
FlatPtr maximum_offset = (FlatPtr)KERNEL_PD_SIZE - MAX_KERNEL_SIZE - 2 * MiB; // The first 2 MiB are used for mapping the pre-kernel
FlatPtr kernel_load_base = default_kernel_load_base + (generate_secure_seed() % maximum_offset);
kernel_load_base &= ~(2 * MiB - 1);
@ -184,7 +184,6 @@ extern "C" [[noreturn]] void init()
info.end_of_prekernel_image = (PhysicalPtr)end_of_prekernel_image;
info.physical_to_virtual_offset = kernel_load_base - kernel_physical_base;
info.kernel_mapping_base = kernel_mapping_base;
info.default_kernel_load_base = default_kernel_load_base;
info.kernel_load_base = kernel_load_base;
#if ARCH(X86_64)
info.gdt64ptr = (PhysicalPtr)gdt64ptr;