diff options
author | Tom <tomut@yahoo.com> | 2020-08-02 12:08:22 -0600 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-08-02 20:50:29 +0200 |
commit | f011c420c16d4da5775e055ad96430bac1d96610 (patch) | |
tree | e5607555638c2244737f5518cbd4792ffe8d96a3 /Kernel/DoubleBuffer.h | |
parent | 6e54d0c072912dd59fdd92f7f28ef90ef21daa1b (diff) | |
download | serenity-f011c420c16d4da5775e055ad96430bac1d96610.zip |
Kernel: Fix signal delivery when no syscall is made
This fixes a regression introduced by the new software context
switching where the Kernel would not deliver a signal unless the
process is making system calls. This is because the TSS no longer
updates the CS value, so the scheduler never considered delivery
as the process always appeared to be in kernel mode. With software
context switching we can just set up the signal trampoline at
any time and when the processor returns back to user mode it'll
get executed. This should fix e.g. killing programs that are
stuck in some tight loop that doesn't make any system calls and
is only pre-empted by the timer interrupt.
Fixes #2958
Diffstat (limited to 'Kernel/DoubleBuffer.h')
0 files changed, 0 insertions, 0 deletions