From dd6706a1a1d3464181e48a76e329b6c82a04c337 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 21 Oct 2018 21:57:43 +0200 Subject: [PATCH] Fix null deref in contextSwitch(). --- Kernel/Task.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Kernel/Task.cpp b/Kernel/Task.cpp index ea80ad97ba..71644bb930 100644 --- a/Kernel/Task.cpp +++ b/Kernel/Task.cpp @@ -360,14 +360,17 @@ static bool contextSwitch(Task* t) if (current == t) return false; - // If the last task hasn't blocked (still marked as running), - // mark it as runnable for the next round. - if (current->state() == Task::Running) - current->setState(Task::Runnable); + if (current) { + // If the last task hasn't blocked (still marked as running), + // mark it as runnable for the next round. + if (current->state() == Task::Running) + current->setState(Task::Runnable); - bool success = MemoryManager::the().unmapRegionsForTask(*current); - ASSERT(success); - success = MemoryManager::the().mapRegionsForTask(*t); + bool success = MemoryManager::the().unmapRegionsForTask(*current); + ASSERT(success); + } + + bool success = MemoryManager::the().mapRegionsForTask(*t); ASSERT(success); current = t;