aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2008-05-11 20:33:47 +0000
committerAlan Cox <alc@FreeBSD.org>2008-05-11 20:33:47 +0000
commitef4d480cedcf362c8b4dfd5934c15ae3836e65de (patch)
treed6293ecdd385d3aeb6c72af7cb8b07fd19d3234b /sys
parent1ff2ab846d9d95806652b76b83aac80ca2e2366a (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/pmap.c5
-rw-r--r--sys/i386/i386/pmap.c5
2 files changed, 6 insertions, 4 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index dcd6b2a9028b..5af214f5fe43 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -4480,11 +4480,12 @@ pmap_align_superpage(vm_object_t object, vm_ooffset_t offset,
{
vm_offset_t superpage_offset;
+ if (size < NBPDR)
+ return;
if (object != NULL && (object->flags & OBJ_COLORED) != 0)
offset += ptoa(object->pg_color);
superpage_offset = offset & PDRMASK;
- if (size < superpage_offset ||
- size - superpage_offset < NBPDR ||
+ if (size - ((NBPDR - superpage_offset) & PDRMASK) < NBPDR ||
(*addr & PDRMASK) == superpage_offset)
return;
if ((*addr & PDRMASK) < superpage_offset)
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index 474fea5c0387..a68881026757 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -4608,11 +4608,12 @@ pmap_align_superpage(vm_object_t object, vm_ooffset_t offset,
{
vm_offset_t superpage_offset;
+ if (size < NBPDR)
+ return;
if (object != NULL && (object->flags & OBJ_COLORED) != 0)
offset += ptoa(object->pg_color);
superpage_offset = offset & PDRMASK;
- if (size < superpage_offset ||
- size - superpage_offset < NBPDR ||
+ if (size - ((NBPDR - superpage_offset) & PDRMASK) < NBPDR ||
(*addr & PDRMASK) == superpage_offset)
return;
if ((*addr & PDRMASK) < superpage_offset)