svn commit: r336010 - in head/sys: amd64/amd64 i386/i386
Konstantin Belousov
kib at FreeBSD.org
Thu Jul 5 17:28:07 UTC 2018
Author: kib
Date: Thu Jul 5 17:28:06 2018
New Revision: 336010
URL: https://svnweb.freebsd.org/changeset/base/336010
Log:
Extend r335969 to superpages.
It is possible that a fictitious unmanaged userspace mapping of
superpage is created on x86, e.g. by pmap_object_init_pt(), with the
physical address outside the vm_page_array[] coverage.
Noted and reviewed by: alc
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D16085
Modified:
head/sys/amd64/amd64/pmap.c
head/sys/i386/i386/pmap.c
Modified: head/sys/amd64/amd64/pmap.c
==============================================================================
--- head/sys/amd64/amd64/pmap.c Thu Jul 5 17:26:44 2018 (r336009)
+++ head/sys/amd64/amd64/pmap.c Thu Jul 5 17:28:06 2018 (r336010)
@@ -2308,7 +2308,6 @@ 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);
@@ -2318,10 +2317,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);
Modified: head/sys/i386/i386/pmap.c
==============================================================================
--- head/sys/i386/i386/pmap.c Thu Jul 5 17:26:44 2018 (r336009)
+++ head/sys/i386/i386/pmap.c Thu Jul 5 17:28:06 2018 (r336010)
@@ -1673,7 +1673,6 @@ 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);
@@ -1683,10 +1682,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);
More information about the svn-src-all
mailing list