diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index b2e204d6317..01675dca78e 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -2308,6 +2308,7 @@ retry: PG_PS_FRAME) | (va & PDRMASK), &pa)) goto retry; m = PHYS_TO_VM_PAGE(pa); + vm_page_hold(m); } } else { pte = *pmap_pde_to_pte(pdep, va); @@ -2317,10 +2318,10 @@ retry: &pa)) goto retry; m = PHYS_TO_VM_PAGE(pa); + if (m != NULL) + vm_page_hold(m); } } - if (m != NULL) - vm_page_hold(m); } PA_UNLOCK_COND(pa); PMAP_UNLOCK(pmap); diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index 959ff7b1260..757ef640612 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -1673,6 +1673,7 @@ retry: PG_PS_FRAME) | (va & PDRMASK), &pa)) goto retry; m = PHYS_TO_VM_PAGE(pa); + vm_page_hold(m); } } else { pte = pmap_pte_ufast(pmap, va, pde); @@ -1682,10 +1683,10 @@ retry: &pa)) goto retry; m = PHYS_TO_VM_PAGE(pa); + if (m != NULL) + vm_page_hold(m); } } - if (m != NULL) - vm_page_hold(m); } PA_UNLOCK_COND(pa); PMAP_UNLOCK(pmap);