kernel/eka/nkern/win32/ncthrd.cpp
changeset 279 957c583b417b
parent 273 6a75fa55495f
--- a/kernel/eka/nkern/win32/ncthrd.cpp	Tue Sep 28 15:28:31 2010 +0100
+++ b/kernel/eka/nkern/win32/ncthrd.cpp	Mon Oct 04 12:03:52 2010 +0100
@@ -443,15 +443,16 @@
 // This function is called in the context of a thread that is being diverted.
 // This can be for either of two reasons: if iDivertFn has been set, that
 // function will be called and is not expected to return i.e.  it should force
-// the thread to exit. Otherwise, the thread will make a null trip through the
-// kernel, causing it to run pending user-mode callbacks on the way out.
+// the thread to exit (in this case, the thread may already be in the kernel,
+// but only at a place where it's safe for it to be killed).  Otherwise, the
+// thread must be in user mode, and it's forced to make a null trip through
+// the kernel, causing it to run pending user-mode callbacks on the way out.
 //
 // On entry, the kernel is locked and interrupts enabled
 //
 	{
 	NThread& me = *static_cast<NThread*>(TheScheduler.iCurrentThread);
 	__NK_ASSERT_ALWAYS(TheScheduler.iKernCSLocked == 1);
-	__NK_ASSERT_ALWAYS(me.iInKernel == 0);
 	__NK_ASSERT_ALWAYS(me.iDiverting);
 	NThread::TDivert divertFn = me.iDivertFn;
 	me.iDivertFn = NULL;