vm: region: fix iterator using wrong buffer offset when seek exceeds current buffer size
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user