Currently kvm_physical_sync_dirty_bitmap() calls kvm_vm_ioctl() and checks if it returns -1. However, kvm_vm_ioctl() actually returns -errno, and not -1, so this check will fail and architectures not implementing this functionality in the kernel blindly attempt broken things like unimplemented dirty page logging for migration.
This addresses bug https://bugs.launchpad.net/qemu/+bug/1294227. Cc: Mario Smarduch <[email protected]> Signed-off-by: Christoffer Dall <[email protected]> --- kvm-all.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kvm-all.c b/kvm-all.c index 4afcd05..ab57170 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -429,7 +429,7 @@ static int kvm_physical_sync_dirty_bitmap(MemoryRegionSection *section) d.slot = mem->slot; - if (kvm_vm_ioctl(s, KVM_GET_DIRTY_LOG, &d) == -1) { + if (kvm_vm_ioctl(s, KVM_GET_DIRTY_LOG, &d) < 0) { DPRINTF("ioctl failed %d\n", errno); ret = -1; break; -- 2.0.0
