Add an assertion to pmap_enter().
When modifying an existing managed mapping, we should find a PV entry for the old mapping. Verify this. Before r335784 this would have been implicitly tested by the fact that we always freed the PV entry for the old mapping. Reviewed by: alc, kib MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D17626
This commit is contained in:
parent
4644f9bef6
commit
36209a40d1
@ -5141,6 +5141,8 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
|
||||
vm_page_aflag_set(om, PGA_REFERENCED);
|
||||
CHANGE_PV_LIST_LOCK_TO_PHYS(&lock, opa);
|
||||
pv = pmap_pvh_remove(&om->md, pmap, va);
|
||||
KASSERT(pv != NULL,
|
||||
("pmap_enter: no PV entry for %#lx", va));
|
||||
if ((newpte & PG_MANAGED) == 0)
|
||||
free_pv_entry(pmap, pv);
|
||||
if ((om->aflags & PGA_WRITEABLE) != 0 &&
|
||||
|
@ -3820,6 +3820,8 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
|
||||
if ((origpte & PG_A) != 0)
|
||||
vm_page_aflag_set(om, PGA_REFERENCED);
|
||||
pv = pmap_pvh_remove(&om->md, pmap, va);
|
||||
KASSERT(pv != NULL,
|
||||
("pmap_enter: no PV entry for %#x", va));
|
||||
if ((newpte & PG_MANAGED) == 0)
|
||||
free_pv_entry(pmap, pv);
|
||||
if ((om->aflags & PGA_WRITEABLE) != 0 &&
|
||||
|
Loading…
Reference in New Issue
Block a user