diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-01-11 19:46:21 +0000 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2012-01-21 05:17:01 +0100 |
commit | aa90fec7ad128039617d31a5fd5ced8b0488f71b (patch) | |
tree | 58aec06f2ac508e483bbb75e6b40fcca4ded3a53 /kvm-all.c | |
parent | 17df768c1e4580f03301d18ea938d3557d441911 (diff) |
Fix dirty logging with 32-bit qemu & 64-bit guests
The kvm_get_dirty_pages_log_range() function uses two address
variables to step through the monitored memory region to update the
dirty log. However, these variables have type unsigned long, which
can overflow if running a 64-bit guest with a 32-bit qemu binary.
This patch changes these to target_phys_addr_t which will have the
correct size.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'kvm-all.c')
-rw-r--r-- | kvm-all.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -344,7 +344,8 @@ static int kvm_get_dirty_pages_log_range(MemoryRegionSection *section, unsigned long *bitmap) { unsigned int i, j; - unsigned long page_number, addr, addr1, c; + unsigned long page_number, c; + target_phys_addr_t addr, addr1; unsigned int len = ((section->size / TARGET_PAGE_SIZE) + HOST_LONG_BITS - 1) / HOST_LONG_BITS; /* |