فهرست منبع

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);
         }
     }