Index: kernel/generic/src/proc/scheduler.c
===================================================================
--- kernel/generic/src/proc/scheduler.c	(revision 181a746c0eb2d625af267727d01796f91915bccd)
+++ kernel/generic/src/proc/scheduler.c	(revision b68ae24ef2a8e80ee94b455682978bfbac6bedbc)
@@ -404,4 +404,5 @@
 	ASSERT((!THREAD) || (irq_spinlock_locked(&THREAD->lock)));
 	ASSERT(CPU != NULL);
+	ASSERT(interrupts_disabled());
 	
 	/*
@@ -419,4 +420,6 @@
 		/* Must be run after the switch to scheduler stack */
 		after_thread_ran();
+		
+		THREAD->need_resched = false;
 		
 		switch (THREAD->state) {
Index: kernel/generic/src/proc/thread.c
===================================================================
--- kernel/generic/src/proc/thread.c	(revision 181a746c0eb2d625af267727d01796f91915bccd)
+++ kernel/generic/src/proc/thread.c	(revision b68ae24ef2a8e80ee94b455682978bfbac6bedbc)
@@ -375,4 +375,5 @@
 	thread->nomigrate = 0;
 	thread->state = Entering;
+	thread->need_resched = false;
 	
 	timeout_initialize(&thread->sleep_timeout);
