mirror of
https://github.com/reactos/reactos.git
synced 2025-04-27 00:50:23 +00:00
[NTOS:MM] Do not acquire Pfn lock in MmGetRmapListHead
All callers already hold it
This commit is contained in:
parent
727e73f253
commit
f201b8af78
2 changed files with 8 additions and 11 deletions
|
@ -426,12 +426,10 @@ PMM_RMAP_ENTRY
|
||||||
NTAPI
|
NTAPI
|
||||||
MmGetRmapListHeadPage(PFN_NUMBER Pfn)
|
MmGetRmapListHeadPage(PFN_NUMBER Pfn)
|
||||||
{
|
{
|
||||||
KIRQL oldIrql;
|
|
||||||
PMM_RMAP_ENTRY ListHead;
|
|
||||||
PMMPFN Pfn1;
|
PMMPFN Pfn1;
|
||||||
|
|
||||||
/* Lock PFN database */
|
/* PFN database must be locked */
|
||||||
oldIrql = MiAcquirePfnLock();
|
MI_ASSERT_PFN_LOCK_HELD();
|
||||||
|
|
||||||
/* Get the entry */
|
/* Get the entry */
|
||||||
Pfn1 = MiGetPfnEntry(Pfn);
|
Pfn1 = MiGetPfnEntry(Pfn);
|
||||||
|
@ -439,19 +437,14 @@ MmGetRmapListHeadPage(PFN_NUMBER Pfn)
|
||||||
|
|
||||||
if (!MI_IS_ROS_PFN(Pfn1))
|
if (!MI_IS_ROS_PFN(Pfn1))
|
||||||
{
|
{
|
||||||
MiReleasePfnLock(oldIrql);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the list head */
|
|
||||||
ListHead = Pfn1->RmapListHead;
|
|
||||||
|
|
||||||
/* Should not have an RMAP for a non-active page */
|
/* Should not have an RMAP for a non-active page */
|
||||||
ASSERT(MiIsPfnInUse(Pfn1) == TRUE);
|
ASSERT(MiIsPfnInUse(Pfn1) == TRUE);
|
||||||
|
|
||||||
/* Release PFN database and return rmap list head */
|
/* Get the list head */
|
||||||
MiReleasePfnLock(oldIrql);
|
return Pfn1->RmapListHead;
|
||||||
return ListHead;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
|
@ -250,7 +250,11 @@ MmPageOutPhysicalAddress(PFN_NUMBER Page)
|
||||||
|
|
||||||
/* We can finally let this page go */
|
/* We can finally let this page go */
|
||||||
MmDeleteRmap(Page, Process, Address);
|
MmDeleteRmap(Page, Process, Address);
|
||||||
|
#if DBG
|
||||||
|
OldIrql = MiAcquirePfnLock();
|
||||||
ASSERT(MmGetRmapListHeadPage(Page) == NULL);
|
ASSERT(MmGetRmapListHeadPage(Page) == NULL);
|
||||||
|
MiReleasePfnLock(OldIrql);
|
||||||
|
#endif
|
||||||
MmReleasePageMemoryConsumer(MC_USER, Page);
|
MmReleasePageMemoryConsumer(MC_USER, Page);
|
||||||
|
|
||||||
if (Address < MmSystemRangeStart)
|
if (Address < MmSystemRangeStart)
|
||||||
|
|
Loading…
Reference in a new issue