summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/amd64/amd64/pmap.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index 36c7f22..7f5fc09 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -802,7 +802,9 @@ pmap_extract(pmap_t pmap, vm_offset_t va)
pde = *pdep;
if (pde) {
if ((pde & PG_PS) != 0) {
- rtval = (pde & ~PDRMASK) | (va & PDRMASK);
+ KASSERT((pde & PG_FRAME & PDRMASK) == 0,
+ ("pmap_extract: bad pde"));
+ rtval = (pde & PG_FRAME) | (va & PDRMASK);
PMAP_UNLOCK(pmap);
return rtval;
}
@@ -835,7 +837,9 @@ pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
if (pdep != NULL && (pde = *pdep)) {
if (pde & PG_PS) {
if ((pde & PG_RW) || (prot & VM_PROT_WRITE) == 0) {
- m = PHYS_TO_VM_PAGE((pde & ~PDRMASK) |
+ KASSERT((pde & PG_FRAME & PDRMASK) == 0,
+ ("pmap_extract_and_hold: bad pde"));
+ m = PHYS_TO_VM_PAGE((pde & PG_FRAME) |
(va & PDRMASK));
vm_page_hold(m);
}
OpenPOWER on IntegriCloud