[NTOSKRNL]

Improve MiRemoveMappedPtes to be able to unmap session mapped views.

svn path=/trunk/; revision=62217
This commit is contained in:
Timo Kreuzer 2014-02-16 13:56:36 +00:00
parent 0cbd932b97
commit e984ea04a6

View file

@ -2118,13 +2118,15 @@ MiRemoveMappedPtes(IN PVOID BaseAddress,
IN PCONTROL_AREA ControlArea,
IN PMMSUPPORT Ws)
{
PMMPTE PointerPte;//, FirstPte;
PMMPTE PointerPte, ProtoPte;//, FirstPte;
PMMPDE PointerPde, SystemMapPde;
PMMPFN Pfn1, Pfn2;
MMPTE PteContents;
KIRQL OldIrql;
DPRINT("Removing mapped view at: 0x%p\n", BaseAddress);
ASSERT(Ws == NULL);
/* Get the PTE and loop each one */
PointerPte = MiAddressToPte(BaseAddress);
//FirstPte = PointerPte;
@ -2175,8 +2177,15 @@ MiRemoveMappedPtes(IN PVOID BaseAddress,
/* Windows ASSERT */
ASSERT((PteContents.u.Long == 0) || (PteContents.u.Soft.Prototype == 1));
/* But not handled in ARM3 */
ASSERT(PteContents.u.Soft.Prototype == 0);
/* Check if this is a prototype pointer PTE */
if (PteContents.u.Soft.Prototype == 1)
{
/* Get the prototype PTE */
ProtoPte = MiProtoPteToPte(&PteContents);
/* We don't support anything else atm */
ASSERT(ProtoPte->u.Long == 0);
}
}
/* Make the PTE into a zero PTE */