From 306d898ee56c0d277d865dd4e3afba3d95eab9aa Mon Sep 17 00:00:00 2001 From: Ali Mohammad Pur Date: Mon, 26 Jul 2021 13:52:05 +0430 Subject: [PATCH] Kernel: Show the unmapped-after-init symbol being accessed This makes it a lot easier to figure out what unmapped function is being accessed, and a lot easier to reason about _why_ it is being accessed. --- Kernel/Arch/x86/common/Interrupts.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Kernel/Arch/x86/common/Interrupts.cpp b/Kernel/Arch/x86/common/Interrupts.cpp index ab54d9c588..c0455c1dab 100644 --- a/Kernel/Arch/x86/common/Interrupts.cpp +++ b/Kernel/Arch/x86/common/Interrupts.cpp @@ -24,6 +24,7 @@ #include #include #include +#include extern FlatPtr start_of_unmap_after_init; extern FlatPtr end_of_unmap_after_init; @@ -323,7 +324,8 @@ void page_fault_handler(TrapFrame* trap) if (fault_address >= (FlatPtr)&start_of_unmap_after_init && fault_address < (FlatPtr)&end_of_unmap_after_init) { dump(regs); - PANIC("Attempt to access UNMAP_AFTER_INIT section"); + auto sym = symbolicate_kernel_address(fault_address); + PANIC("Attempt to access UNMAP_AFTER_INIT section ({:#p}: {})", fault_address, sym ? sym->name : "(Unknown)"); } if (fault_address >= (FlatPtr)&start_of_kernel_ksyms && fault_address < (FlatPtr)&end_of_kernel_ksyms) {