Kernel: Don't try to dispatch urgent signals for kernel crashes
If we crashed in the kernel there's no point to sending a signal to the active process, we're going to panic soon anyway.
This commit is contained in:
parent
548488f050
commit
39ecb832e4
Notes:
sideshowbarker
2024-07-17 23:06:20 +09:00
Author: https://github.com/IdanHo Commit: https://github.com/SerenityOS/serenity/commit/39ecb832e47 Pull-request: https://github.com/SerenityOS/serenity/pull/11175 Reviewed-by: https://github.com/BertalanD ✅
1 changed files with 3 additions and 3 deletions
|
@ -219,7 +219,8 @@ void handle_crash(RegisterState const& regs, char const* description, int signal
|
|||
if (!current_thread)
|
||||
PANIC("{} with !Thread::current()", description);
|
||||
|
||||
if (!current_thread->should_ignore_signal(signal) && !current_thread->is_signal_masked(signal)) {
|
||||
auto crashed_in_kernel = (regs.cs & 3) == 0;
|
||||
if (!crashed_in_kernel && !current_thread->should_ignore_signal(signal) && !current_thread->is_signal_masked(signal)) {
|
||||
current_thread->send_urgent_signal_to_self(signal);
|
||||
return;
|
||||
}
|
||||
|
@ -233,9 +234,8 @@ void handle_crash(RegisterState const& regs, char const* description, int signal
|
|||
dmesgln("CRASH: CPU #{} {} in ring {}", Processor::current_id(), description, (regs.cs & 3));
|
||||
dump(regs);
|
||||
|
||||
if (!(regs.cs & 3)) {
|
||||
if (crashed_in_kernel)
|
||||
PANIC("Crash in ring 0");
|
||||
}
|
||||
|
||||
process.crash(signal, regs.ip(), out_of_memory);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue