diff --git a/vm/vm-region.c b/vm/vm-region.c index b4ac9e6..0f135ac 100644 --- a/vm/vm-region.c +++ b/vm/vm-region.c @@ -545,8 +545,8 @@ static void vm_iterator_begin( buffer_size += vm_page_get_size_bytes(next); } - it->it_buf = buffer_base; - it->it_max = buffer_size; + it->it_buf = (char *)buffer_base + (object_offset & VM_PAGE_MASK); + it->it_max = buffer_size - (object_offset & VM_PAGE_MASK); } static kern_status_t vm_iterator_seek(struct vm_iterator *it, size_t nr_bytes) @@ -615,7 +615,7 @@ static kern_status_t vm_iterator_seek(struct vm_iterator *it, size_t nr_bytes) buffer_size += vm_page_get_size_bytes(next); } - it->it_buf = buffer_base; + it->it_buf = (char *)buffer_base + (object_offset & VM_PAGE_MASK); it->it_max = buffer_size; return KERN_OK; }