Message ID | 20230105124528.93813-2-david@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | migration/ram: background snapshot fixes and optimiations | expand |
David Hildenbrand <david@redhat.com> wrote: > Unfortunately, commit f7b9dcfbcf44 broke populate_read_range(): the loop > end condition is very wrong, resulting in that function not populating the > full range. Lets' fix that. > > Fixes: f7b9dcfbcf44 ("migration/ram: Factor out populating pages readable in ram_block_populate_pages()") > Cc: qemu-stable@nongnu.org > Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com>
diff --git a/migration/ram.c b/migration/ram.c index 334309f1c6..b8f58d2a40 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -1774,13 +1774,15 @@ out: static inline void populate_read_range(RAMBlock *block, ram_addr_t offset, ram_addr_t size) { + const ram_addr_t end = offset + size; + /* * We read one byte of each page; this will preallocate page tables if * required and populate the shared zeropage on MAP_PRIVATE anonymous memory * where no page was populated yet. This might require adaption when * supporting other mappings, like shmem. */ - for (; offset < size; offset += block->page_size) { + for (; offset < end; offset += block->page_size) { char tmp = *((char *)block->host + offset); /* Don't optimize the read out */
Unfortunately, commit f7b9dcfbcf44 broke populate_read_range(): the loop end condition is very wrong, resulting in that function not populating the full range. Lets' fix that. Fixes: f7b9dcfbcf44 ("migration/ram: Factor out populating pages readable in ram_block_populate_pages()") Cc: qemu-stable@nongnu.org Signed-off-by: David Hildenbrand <david@redhat.com> --- migration/ram.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)