From 94a9d7c3b923d617eb35bdfb4a5887fcd5546c1b Mon Sep 17 00:00:00 2001 From: Justin Hibbits Date: Fri, 8 Dec 2017 03:49:53 +0000 Subject: [PATCH] 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)). --- sys/powerpc/booke/pmap.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sys/powerpc/booke/pmap.c b/sys/powerpc/booke/pmap.c index 2cf14213a91..e1f678576d0 100644 --- a/sys/powerpc/booke/pmap.c +++ b/sys/powerpc/booke/pmap.c @@ -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();