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/ntoskr... ============================================================================== --- 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 ***********************************************************/