Remove PTE VA mappings for tracked pages in 64-bit mode

This was done in 32-bit mode, but not duplicated when 64-bit mode was
brought in.  Without this, stale mappings can be left, leading to odd
crashes when the wrong VA is checked in XX_PhysToVirt() (dpaa(4)).
This commit is contained in:
Justin Hibbits 2017-12-08 03:49:53 +00:00
parent 52f39da1f8
commit 94a9d7c3b9

View File

@ -1291,6 +1291,10 @@ pte_remove(mmu_t mmu, pmap_t pmap, vm_offset_t va, u_int8_t flags)
/* Remove pv_entry from pv_list. */
pv_remove(pmap, va, m);
} else if (m->md.pv_tracked) {
pv_remove(pmap, va, m);
if (TAILQ_EMPTY(&m->md.pv_list))
m->md.pv_tracked = false;
}
mtx_lock_spin(&tlbivax_mutex);
tlb_miss_lock();