diff --git a/Kernel/Memory/MemoryManager.cpp b/Kernel/Memory/MemoryManager.cpp index c2c933e30b..015868a391 100644 --- a/Kernel/Memory/MemoryManager.cpp +++ b/Kernel/Memory/MemoryManager.cpp @@ -711,16 +711,21 @@ PageFaultResponse MemoryManager::handle_page_fault(PageFault const& fault) return fault.vaddr() >= VirtualAddress { start } && fault.vaddr() < VirtualAddress { end }; }; - if (faulted_in_range(&start_of_ro_after_init, &end_of_ro_after_init)) - PANIC("Attempt to write into READONLY_AFTER_INIT section"); + if (faulted_in_range(&start_of_ro_after_init, &end_of_ro_after_init)) { + dbgln("Attempt to write into READONLY_AFTER_INIT section"); + return PageFaultResponse::ShouldCrash; + } if (faulted_in_range(&start_of_unmap_after_init, &end_of_unmap_after_init)) { auto const* kernel_symbol = symbolicate_kernel_address(fault.vaddr().get()); - PANIC("Attempt to access UNMAP_AFTER_INIT section ({:p}: {})", fault.vaddr(), kernel_symbol ? kernel_symbol->name : "(Unknown)"); + dbgln("Attempt to access UNMAP_AFTER_INIT section ({:p}: {})", fault.vaddr(), kernel_symbol ? kernel_symbol->name : "(Unknown)"); + return PageFaultResponse::ShouldCrash; } - if (faulted_in_range(&start_of_kernel_ksyms, &end_of_kernel_ksyms)) - PANIC("Attempt to access KSYMS section"); + if (faulted_in_range(&start_of_kernel_ksyms, &end_of_kernel_ksyms)) { + dbgln("Attempt to access KSYMS section"); + return PageFaultResponse::ShouldCrash; + } if (Processor::current_in_irq()) { dbgln("CPU[{}] BUG! Page fault while handling IRQ! code={}, vaddr={}, irq level: {}",