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


Reply via email to