瀏覽代碼

Kernel: Replace usages of SIGSTKFLT with SIGSEGV

SIGSTKFLT is a signal that signifies a stack fault in a x87 coprocessor,
this signal is not POSIX and also unused by Linux and the BSDs, so let's
use SIGSEGV so programs that setup signal handlers for the common
signals could still handle them in serenity.
Idan Horowitz 3 年之前
父節點
當前提交
a9e436c4a3
共有 2 個文件被更改,包括 2 次插入2 次删除
  1. 1 1
      Kernel/Arch/x86/common/Interrupts.cpp
  2. 1 1
      Kernel/Memory/MemoryManager.cpp

+ 1 - 1
Kernel/Arch/x86/common/Interrupts.cpp

@@ -316,7 +316,7 @@ void page_fault_handler(TrapFrame* trap)
     VirtualAddress userspace_sp = VirtualAddress { regs.userspace_sp() };
     if (!faulted_in_kernel && !MM.validate_user_stack(current_thread->process().address_space(), userspace_sp)) {
         dbgln("Invalid stack pointer: {}", userspace_sp);
-        handle_crash(regs, "Bad stack on page fault", SIGSTKFLT);
+        handle_crash(regs, "Bad stack on page fault", SIGSEGV);
     }
 
     if (fault_address >= (FlatPtr)&start_of_ro_after_init && fault_address < (FlatPtr)&end_of_ro_after_init) {

+ 1 - 1
Kernel/Memory/MemoryManager.cpp

@@ -654,7 +654,7 @@ void MemoryManager::validate_syscall_preconditions(AddressSpace& space, Register
         VirtualAddress userspace_sp = VirtualAddress { regs.userspace_sp() };
         if (!MM.validate_user_stack_no_lock(space, userspace_sp)) {
             dbgln("Invalid stack pointer: {}", userspace_sp);
-            unlock_and_handle_crash("Bad stack on syscall entry", SIGSTKFLT);
+            unlock_and_handle_crash("Bad stack on syscall entry", SIGSEGV);
         }
     }