diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-12-21 16:21:13 +0100 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-12-21 16:21:13 +0100 |
commit | ae2d72377dceb95eeaf4901b9371db71ab5b86ab (patch) | |
tree | 2eb5f9b63027631aee651cfa78b52aac25f6f85a /Kernel/VM/MemoryManager.cpp | |
parent | 70865e5a5d74ad7039d5de9c63c76ef5fc992f91 (diff) | |
download | serenity-ae2d72377dceb95eeaf4901b9371db71ab5b86ab.zip |
Kernel: Enable the x86 WP bit to catch invalid memory writes in ring 0
Setting this bit will cause the CPU to generate a page fault when
writing to read-only memory, even if we're executing in the kernel.
Seemingly the only change needed to make this work was to have the
inode-backed page fault handler use a temporary mapping for writing
the read-from-disk data into the newly-allocated physical page.
Diffstat (limited to 'Kernel/VM/MemoryManager.cpp')
-rw-r--r-- | Kernel/VM/MemoryManager.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Kernel/VM/MemoryManager.cpp b/Kernel/VM/MemoryManager.cpp index b0bc7fbbe4..d69eb86f66 100644 --- a/Kernel/VM/MemoryManager.cpp +++ b/Kernel/VM/MemoryManager.cpp @@ -174,7 +174,7 @@ void MemoryManager::initialize_paging() asm volatile("movl %%eax, %%cr3" ::"a"(kernel_page_directory().cr3())); asm volatile( "movl %%cr0, %%eax\n" - "orl $0x80000001, %%eax\n" + "orl $0x80010001, %%eax\n" "movl %%eax, %%cr0\n" :: : "%eax", "memory"); |