From 25a460e3c6948441271e79d18158dd223cf6a726 Mon Sep 17 00:00:00 2001 From: apio Date: Wed, 12 Oct 2022 17:12:06 +0200 Subject: [PATCH] Scheduler: clear user tasks' registers --- kernel/src/thread/Scheduler.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/src/thread/Scheduler.cpp b/kernel/src/thread/Scheduler.cpp index 233b9b7c..4b8d2426 100644 --- a/kernel/src/thread/Scheduler.cpp +++ b/kernel/src/thread/Scheduler.cpp @@ -91,6 +91,7 @@ void Scheduler::add_user_task(void* task) { Task* new_task = new Task; ASSERT(new_task); + memset(&new_task->regs, 0, sizeof(Context)); new_task->user_task = true; new_task->id = free_tid++; new_task->regs.rip = (uint64_t)task; @@ -120,6 +121,7 @@ void Scheduler::load_user_task(const char* filename) kinfoln("Loading user task: %s", filename); Task* new_task = new Task; ASSERT(new_task); + memset(&new_task->regs, 0, sizeof(Context)); new_task->id = free_tid++; ELFImage* image = ELFLoader::load_elf_from_filesystem(filename); if (!image) @@ -154,6 +156,7 @@ void Scheduler::load_user_task(const char* filename) void Scheduler::reset_task(Task* task, ELFImage* new_image) { + memset(&task->regs, 0, sizeof(Context)); task->state = task->Running; task->regs.rip = new_image->entry; task->image = new_image;