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);
|
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;
|
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)
|
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);
|
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;
|
it->it_max = buffer_size;
|
||||||
return KERN_OK;
|
return KERN_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user