Pārlūkot izejas kodu

Kernel: Halt CPU on deadly UBSAN instead of calling PANIC

The separate backtrace that the PANIC emits isn't useful and just adds
more data to visually filter from the output when debugging an issue.
Instead of calling PANIC, just emit the message with dbgln() and
manually halt the system.
Brian Gianforcaro 4 gadi atpakaļ
vecāks
revīzija
f982ef0ef0
1 mainītis faili ar 5 papildinājumiem un 3 dzēšanām
  1. 5 3
      Kernel/UBSanitizer.cpp

+ 5 - 3
Kernel/UBSanitizer.cpp

@@ -5,8 +5,8 @@
  */
  */
 
 
 #include <AK/Format.h>
 #include <AK/Format.h>
+#include <Kernel/Arch/x86/CPU.h>
 #include <Kernel/KSyms.h>
 #include <Kernel/KSyms.h>
-#include <Kernel/Panic.h>
 #include <Kernel/UBSanitizer.h>
 #include <Kernel/UBSanitizer.h>
 
 
 using namespace Kernel;
 using namespace Kernel;
@@ -24,8 +24,10 @@ static void print_location(const SourceLocation& location)
         dbgln("KUBSAN: at {}, line {}, column: {}", location.filename(), location.line(), location.column());
         dbgln("KUBSAN: at {}, line {}, column: {}", location.filename(), location.line(), location.column());
     }
     }
     dump_backtrace();
     dump_backtrace();
-    if (g_ubsan_is_deadly)
-        PANIC("UB is configured to be deadly.");
+    if (g_ubsan_is_deadly) {
+        dbgln("UB is configured to be deadly, halting the system.");
+        Processor::halt();
+    }
 }
 }
 
 
 void __ubsan_handle_load_invalid_value(const InvalidValueData&, ValueHandle) __attribute__((used));
 void __ubsan_handle_load_invalid_value(const InvalidValueData&, ValueHandle) __attribute__((used));