1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-25 19:25:07 +00:00

Kernel: Make MemoryManager::protect_ksyms_after_init UNMAP_AFTER_INIT

The function to protect ksyms after initialization, is only used during
boot of the system, so it can be UNMAP_AFTER_INIT as well.

This requires we switch the order of the init sequence, so we now call
`MM.protect_ksyms_after_init()` before `MM.unmap_text_after_init()`.
This commit is contained in:
Brian Gianforcaro 2021-12-24 05:21:08 -08:00 committed by Brian Gianforcaro
parent e88e4967d1
commit 1c950773fb
2 changed files with 4 additions and 4 deletions

View file

@ -149,7 +149,7 @@ void MemoryManager::unmap_text_after_init()
dmesgln("Unmapped {} KiB of kernel text after init! :^)", (end - start) / KiB); dmesgln("Unmapped {} KiB of kernel text after init! :^)", (end - start) / KiB);
} }
void MemoryManager::protect_ksyms_after_init() UNMAP_AFTER_INIT void MemoryManager::protect_ksyms_after_init()
{ {
SpinlockLocker mm_lock(s_mm_lock); SpinlockLocker mm_lock(s_mm_lock);
SpinlockLocker page_lock(kernel_page_directory().get_lock()); SpinlockLocker page_lock(kernel_page_directory().get_lock());

View file

@ -341,12 +341,12 @@ void init_stage2(void*)
// NOTE: Everything marked READONLY_AFTER_INIT becomes non-writable after this point. // NOTE: Everything marked READONLY_AFTER_INIT becomes non-writable after this point.
MM.protect_readonly_after_init_memory(); MM.protect_readonly_after_init_memory();
// NOTE: Everything marked UNMAP_AFTER_INIT becomes inaccessible after this point.
MM.unmap_text_after_init();
// NOTE: Everything in the .ksyms section becomes read-only after this point. // NOTE: Everything in the .ksyms section becomes read-only after this point.
MM.protect_ksyms_after_init(); MM.protect_ksyms_after_init();
// NOTE: Everything marked UNMAP_AFTER_INIT becomes inaccessible after this point.
MM.unmap_text_after_init();
// FIXME: It would be nicer to set the mode from userspace. // FIXME: It would be nicer to set the mode from userspace.
// FIXME: It would be smarter to not hardcode that the first tty is the only graphical one // FIXME: It would be smarter to not hardcode that the first tty is the only graphical one
ConsoleManagement::the().first_tty()->set_graphical(GraphicsManagement::the().framebuffer_devices_exist()); ConsoleManagement::the().first_tty()->set_graphical(GraphicsManagement::the().framebuffer_devices_exist());