Author: fireball
Date: Fri Aug 15 07:17:08 2008
New Revision: 35352
URL:
http://svn.reactos.org/svn/reactos?rev=35352&view=rev
Log:
- Fix MiSyncThreadProcessViews. Should fix bug 3658. Based on Stefan Ginsberg's
patch.
See issue #3658 for more details.
Modified:
trunk/reactos/ntoskrnl/include/internal/mm.h
trunk/reactos/ntoskrnl/ke/i386/ctxswitch.S
trunk/reactos/ntoskrnl/ke/procobj.c
trunk/reactos/ntoskrnl/ke/thrdobj.c
trunk/reactos/ntoskrnl/ke/thrdschd.c
trunk/reactos/ntoskrnl/mm/mm.c
Modified: trunk/reactos/ntoskrnl/include/internal/mm.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
==============================================================================
--- trunk/reactos/ntoskrnl/include/internal/mm.h [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/include/internal/mm.h [iso-8859-1] Fri Aug 15 07:17:08 2008
@@ -1556,7 +1556,8 @@
VOID
FASTCALL
MiSyncThreadProcessViews(
- IN PKTHREAD NextThread
+ IN PKTHREAD NextThread,
+ IN PEPROCESS Process
);
extern PMM_AVL_TABLE MmKernelAddressSpace;
Modified: trunk/reactos/ntoskrnl/ke/i386/ctxswitch.S
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/ctxswitch…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/i386/ctxswitch.S [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/i386/ctxswitch.S [iso-8859-1] Fri Aug 15 07:17:08 2008
@@ -738,7 +738,8 @@
SwapContext:
/* ReactOS Mm Hack */
mov ecx, esi
- call @MiSyncThreadProcessViews@4
+ mov edx, [edi+KTHREAD_APCSTATE_PROCESS]
+ call @MiSyncThreadProcessViews@8
/* Swap context at APC_LEVEL */
mov ecx, APC_LEVEL
Modified: trunk/reactos/ntoskrnl/ke/procobj.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/procobj.c?rev=…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/procobj.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/procobj.c [iso-8859-1] Fri Aug 15 07:17:08 2008
@@ -448,7 +448,7 @@
ASSERT_IRQL_LESS_OR_EQUAL(DISPATCH_LEVEL);
/* Make sure that we are in the right page directory (ReactOS Mm Hack) */
- MiSyncThreadProcessViews(Thread);
+ MiSyncThreadProcessViews(Thread, (PEPROCESS)Process);
/* Check if we're already in that process */
if (Thread->ApcState.Process == Process) return;
@@ -574,7 +574,7 @@
ASSERT_IRQL_LESS_OR_EQUAL(DISPATCH_LEVEL);
/* Make sure that we are in the right page directory (ReactOS Mm Hack) */
- MiSyncThreadProcessViews(Thread);
+ MiSyncThreadProcessViews(Thread, (PEPROCESS)Process);
/* Crash system if DPC is being executed! */
if (KeIsExecutingDpc())
Modified: trunk/reactos/ntoskrnl/ke/thrdobj.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/thrdobj.c?rev=…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/thrdobj.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/thrdobj.c [iso-8859-1] Fri Aug 15 07:17:08 2008
@@ -811,7 +811,7 @@
Thread->KernelStackResident = TRUE;
/* Make sure that we are in the right page directory (ReactOS Mm Hack) */
- MiSyncThreadProcessViews(Thread);
+ MiSyncThreadProcessViews(Thread, (PEPROCESS)Process);
/* Enter SEH to avoid crashes due to user mode */
Status = STATUS_SUCCESS;
Modified: trunk/reactos/ntoskrnl/ke/thrdschd.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/thrdschd.c?rev…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/thrdschd.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/thrdschd.c [iso-8859-1] Fri Aug 15 07:17:08 2008
@@ -344,7 +344,7 @@
WaitIrql = CurrentThread->WaitIrql;
/* REACTOS Mm Hack of Doom */
- MiSyncThreadProcessViews(NextThread);
+ MiSyncThreadProcessViews(NextThread, PsGetCurrentProcess());
/* Swap contexts */
ApcState = KiSwapContext(CurrentThread, NextThread);
@@ -714,7 +714,7 @@
ASSERT(OldIrql <= DISPATCH_LEVEL);
/* REACTOS Mm Hack of Doom */
- MiSyncThreadProcessViews(NextThread);
+ MiSyncThreadProcessViews(NextThread, PsGetCurrentProcess());
/* Swap to new thread */
KiSwapContext(Thread, NextThread);
Modified: trunk/reactos/ntoskrnl/mm/mm.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/mm.c?rev=35352…
==============================================================================
--- trunk/reactos/ntoskrnl/mm/mm.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/mm.c [iso-8859-1] Fri Aug 15 07:17:08 2008
@@ -26,12 +26,12 @@
VOID
FASTCALL
-MiSyncThreadProcessViews(IN PKTHREAD NextThread)
-{
- PVOID Process = PsGetCurrentProcess();
+MiSyncThreadProcessViews(IN PKTHREAD NextThread,
+ IN PEPROCESS Process)
+{
PETHREAD Thread = CONTAINING_RECORD(NextThread, ETHREAD, Tcb);
- /* Hack Sync because Mm is broken */
+ /* Hack Sync because Mm is broken */
MmUpdatePageDir(Process, Thread, sizeof(ETHREAD));
MmUpdatePageDir(Process, Thread->ThreadsProcess, sizeof(EPROCESS));
MmUpdatePageDir(Process,