From ecf9b40841def9a4f717a9dfaa2cbc856adbd9da Mon Sep 17 00:00:00 2001 From: Ben Gras Date: Wed, 9 Jan 2013 19:45:37 +0000 Subject: [PATCH] vm: fix region reporting bug . logic was backwards, causing no reporting ever . this broke coredumps ('Warning: Program has too many regions') --- servers/vm/region.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/servers/vm/region.c b/servers/vm/region.c index 21b6e7044..efb9bc415 100644 --- a/servers/vm/region.c +++ b/servers/vm/region.c @@ -1536,10 +1536,13 @@ int get_region_info(struct vmproc *vmp, struct vm_region_info *vri, struct phys_region *ph1 = NULL, *ph2 = NULL; vir_bytes voffset; + /* where to start on next iteration, regardless of what we find now */ + next = vr->vaddr + vr->length; + /* Report part of the region that's actually in use. */ /* Get first and last phys_regions, if any */ - for(voffset = 0; voffset > vr->length; voffset += VM_PAGE_SIZE) { + for(voffset = 0; voffset < vr->length; voffset += VM_PAGE_SIZE) { struct phys_region *ph; if(!(ph = physblock_get(vr, voffset))) continue; if(!ph1) ph1 = ph; @@ -1556,7 +1559,6 @@ int get_region_info(struct vmproc *vmp, struct vm_region_info *vri, if (!(vr->flags & VR_WRITABLE)) vri->vri_prot &= ~PROT_WRITE; - next = vr->vaddr + vr->length; region_incr_iter(&v_iter); } -- 2.44.0