Author: tkreuzer
Date: Sun Nov 22 21:33:49 2009
New Revision: 44269
URL: http://svn.reactos.org/svn/reactos?rev=44269&view=rev
Log:
[MM]
Don't acquire the pfn lock before calling MmReleasePageMemoryConsumer. The function acquires it already and before that it acquires a different spinlock, leading to a race condition on SMP systems.
Modified:
branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/contmem.c
Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/contmem.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/contmem.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/contmem.c [iso-8859-1] Sun Nov 22 21:33:49 2009
@@ -321,11 +321,6 @@
MmUnmapIoSpace(BaseAddress, PageCount << PAGE_SHIFT);
//
- // Lock the PFN database
- //
- OldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock);
-
- //
// Loop all the pages
//
LastPage = PageFrameIndex + PageCount;
@@ -336,11 +331,6 @@
//
MmReleasePageMemoryConsumer(MC_NPPOOL, PageFrameIndex);
} while (++PageFrameIndex < LastPage);
-
- //
- // Release the PFN lock
- //
- KeReleaseQueuedSpinLock(LockQueuePfnLock, OldIrql);
}
/* PUBLIC FUNCTIONS ***********************************************************/