From 03e73a731288a1d463ae0ff9ed3756b54c0bafa2 Mon Sep 17 00:00:00 2001 From: Matthias Kruk Date: Tue, 24 Sep 2019 17:38:26 +0900 Subject: [PATCH] Disable interrupts while we don't have a valid stack in task_switch() --- kernel/arch/task.S | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/kernel/arch/task.S b/kernel/arch/task.S index faed92a..9f6a190 100644 --- a/kernel/arch/task.S +++ b/kernel/arch/task.S @@ -158,7 +158,7 @@ task_switch: movl 4(%esp), %edi cmpl %esi, %edi - jnz 2f + jne 2f /* FIXME: Return -EALREADY instead */ movl $-1, %eax ret @@ -170,6 +170,12 @@ task_switch: cmpl %ecx, %edx jz 2f + /* + * Clear interrupts, since we won't have a valid stack until the + * iret instruction in _int_restore is executed + */ + cli + /* switch page directory */ movl %ecx, %cr3 -- 2.47.3