//
// Get the template
//
- TempPte = HyperTemplatePte;
+ TempPte = ValidKernelPte;
switch (CacheAttribute)
{
case MiNonCached:
PETHREAD Thread;
PMMSUPPORT AddressSpace;
NTSTATUS ProbeStatus;
- PMMPTE PointerPte, PointerPde, LastPte;
+ PMMPTE PointerPte, LastPte;
+ PMMPDE PointerPde;
PFN_NUMBER PageFrameIndex;
BOOLEAN UsePfnLock;
KIRQL OldIrql;
// Grab the PFN
//
PageFrameIndex = PFN_FROM_PTE(PointerPte);
- if (PageFrameIndex < MmHighestPhysicalPage)
+ if (PageFrameIndex <= MmHighestPhysicalPage)
{
//
// Get the PFN entry
// Now lock the page
//
MmReferencePage(PageFrameIndex);
- MmLockPage(PageFrameIndex);
}
else
{
//
// Unlock and dereference
//
- MmUnlockPage(*MdlPages);
MmDereferencePage(*MdlPages);
}
} while (++MdlPages < LastPage);
//
// Unlock and dereference
//
- MmUnlockPage(*MdlPages);
MmDereferencePage(*MdlPages);
} while (++MdlPages < LastPage);