From 10b7f6b77eaf4e162f578139b75b1e2302966f49 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 14 Feb 2021 11:36:28 +0100 Subject: [PATCH] Kernel: Mark handle_crash() as [[noreturn]] --- Kernel/Arch/i386/CPU.cpp | 1 - Kernel/Arch/i386/CPU.h | 2 +- Kernel/Syscall.cpp | 4 ---- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/Kernel/Arch/i386/CPU.cpp b/Kernel/Arch/i386/CPU.cpp index 6c4e30b139..a224504064 100644 --- a/Kernel/Arch/i386/CPU.cpp +++ b/Kernel/Arch/i386/CPU.cpp @@ -263,7 +263,6 @@ void page_fault_handler(TrapFrame* trap) if (!faulted_in_kernel && !MM.validate_user_stack(current_thread->process(), VirtualAddress(regs.userspace_esp))) { dbgln("Invalid stack pointer: {}", VirtualAddress(regs.userspace_esp)); handle_crash(regs, "Bad stack on page fault", SIGSTKFLT); - ASSERT_NOT_REACHED(); } auto response = MM.handle_page_fault(PageFault(regs.exception_code, VirtualAddress(fault_address))); diff --git a/Kernel/Arch/i386/CPU.h b/Kernel/Arch/i386/CPU.h index ae3e79a32b..143d8560cf 100644 --- a/Kernel/Arch/i386/CPU.h +++ b/Kernel/Arch/i386/CPU.h @@ -283,7 +283,7 @@ void replace_shared_handler_with_single(GenericInterruptHandler&); void unregister_generic_interrupt_handler(u8 number, GenericInterruptHandler&); void flush_idt(); void load_task_register(u16 selector); -void handle_crash(RegisterState&, const char* description, int signal, bool out_of_memory = false); +[[noreturn]] void handle_crash(RegisterState&, const char* description, int signal, bool out_of_memory = false); #define LSW(x) ((u32)(x)&0xFFFF) #define MSW(x) (((u32)(x) >> 16) & 0xFFFF) diff --git a/Kernel/Syscall.cpp b/Kernel/Syscall.cpp index 54c31b608d..569a6434e9 100644 --- a/Kernel/Syscall.cpp +++ b/Kernel/Syscall.cpp @@ -172,26 +172,22 @@ void syscall_handler(TrapFrame* trap) if (!MM.validate_user_stack(process, VirtualAddress(regs.userspace_esp))) { dbgln("Invalid stack pointer: {:p}", regs.userspace_esp); handle_crash(regs, "Bad stack on syscall entry", SIGSTKFLT); - ASSERT_NOT_REACHED(); } auto* calling_region = MM.find_region_from_vaddr(process.space(), VirtualAddress(regs.eip)); if (!calling_region) { dbgln("Syscall from {:p} which has no associated region", regs.eip); handle_crash(regs, "Syscall from unknown region", SIGSEGV); - ASSERT_NOT_REACHED(); } if (calling_region->is_writable()) { dbgln("Syscall from writable memory at {:p}", regs.eip); handle_crash(regs, "Syscall from writable memory", SIGSEGV); - ASSERT_NOT_REACHED(); } if (process.space().enforces_syscall_regions() && !calling_region->is_syscall_region()) { dbgln("Syscall from non-syscall region"); handle_crash(regs, "Syscall from non-syscall region", SIGSEGV); - ASSERT_NOT_REACHED(); } process.big_lock().lock();