vm: region: fix iterator using wrong buffer offset when seek exceeds current buffer size

This commit is contained in:
2026-02-21 11:07:53 +00:00
parent ed25ee6761
commit 8b188a0ac4

View File

@@ -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;
}