[ros-diffs] [cgutman] 54256: [NTOSKRNL] - Pass a placeholder trap information, indicating that we are unlocked, to MmAccessFault in MmProbeAndLockPages as temporary hack until Mm locking is fixed - Fixes "Asse...

cgutman at svn.reactos.org cgutman at svn.reactos.org
Wed Oct 26 14:38:59 UTC 2011


Author: cgutman
Date: Wed Oct 26 14:38:57 2011
New Revision: 54256

URL: http://svn.reactos.org/svn/reactos?rev=54256&view=rev
Log:
[NTOSKRNL]
- Pass a placeholder trap information, indicating that we are unlocked, to MmAccessFault in MmProbeAndLockPages as temporary hack until Mm locking is fixed
- Fixes "Assertion 'GuardedMutex->Owner == KeGetCurrentThread()' failed" when faulting in pages via MmProbeAndLockPages
- Dedicated to Jim :)

Modified:
    trunk/reactos/ntoskrnl/mm/ARM3/mdlsup.c

Modified: trunk/reactos/ntoskrnl/mm/ARM3/mdlsup.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/mdlsup.c?rev=54256&r1=54255&r2=54256&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/mm/ARM3/mdlsup.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/ARM3/mdlsup.c [iso-8859-1] Wed Oct 26 14:38:57 2011
@@ -861,7 +861,9 @@
             // Access the page
             //
             Address = MiPteToAddress(PointerPte);
-            Status = MmAccessFault(FALSE, Address, KernelMode, NULL);
+
+            //HACK: Pass a placeholder TrapInformation so the fault handler knows we're unlocked
+            Status = MmAccessFault(FALSE, Address, KernelMode, (PVOID)0xBADBADA3);
             if (!NT_SUCCESS(Status))
             {
                 //
@@ -928,7 +930,9 @@
                         //
                         // Access the page
                         //
-                        Status = MmAccessFault(TRUE, Address, KernelMode, NULL);
+
+                        //HACK: Pass a placeholder TrapInformation so the fault handler knows we're unlocked
+                        Status = MmAccessFault(TRUE, Address, KernelMode, (PVOID)0xBADBADA3);
                         if (!NT_SUCCESS(Status))
                         {
                             //




More information about the Ros-diffs mailing list