mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-22 09:19:03 +00:00
Kernel: Flush the TLB (page only) when copying in a new kernel mapping
Not flushing the TLB here puts us in an infinite page fault loop.
This commit is contained in:
@@ -408,8 +408,9 @@ PageFaultResponse MemoryManager::handle_page_fault(const PageFault& fault)
|
||||
if (fault.is_not_present() && fault.vaddr().get() >= 0xc0000000) {
|
||||
u32 page_directory_index = (fault.vaddr().get() >> 22) & 0x3ff;
|
||||
if (kernel_page_directory().entries()[page_directory_index].is_present()) {
|
||||
current->process().page_directory().entries()[page_directory_index].copy_from({}, kernel_page_directory().entries()[page_directory_index]);
|
||||
dbgprintf("NP(kernel): copying new kernel mapping for L%x into process\n", fault.vaddr().get());
|
||||
current->process().page_directory().entries()[page_directory_index].copy_from({}, kernel_page_directory().entries()[page_directory_index]);
|
||||
flush_tlb(fault.vaddr().page_base());
|
||||
return PageFaultResponse::Continue;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user