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/ntoskrnl/mm/ARM3/contmem.c?rev=44269&r1=44268&r2=44269&view=diff
==============================================================================
--- 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
***********************************************************/