소스 검색

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