mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 04:27:45 +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:
parent
e0c7727934
commit
f0166efe8c
6 changed files with 5 additions and 8 deletions
|
@ -13,6 +13,7 @@
|
|||
#endif
|
||||
|
||||
#define MAX_KERNEL_SIZE 0x4000000
|
||||
#define KERNEL_PD_SIZE 0x31000000
|
||||
|
||||
#ifdef __cplusplus
|
||||
namespace Kernel {
|
||||
|
@ -22,7 +23,6 @@ struct [[gnu::packed]] BootInfo {
|
|||
u32 end_of_prekernel_image;
|
||||
u64 physical_to_virtual_offset;
|
||||
u64 kernel_mapping_base;
|
||||
u64 default_kernel_load_base;
|
||||
u64 kernel_load_base;
|
||||
# if ARCH(X86_64)
|
||||
u32 gdt64ptr;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue