KVM: x86: Fix warning due to implicit truncation on 32-bit KVM
authorSean Christopherson <sean.j.christopherson@intel.com>
Thu, 5 Mar 2020 00:24:22 +0000 (16:24 -0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 16 Mar 2020 16:57:48 +0000 (17:57 +0100)
Explicitly cast the integer literal to an unsigned long when stuffing a
non-canonical value into the host virtual address during private memslot
deletion.  The explicit cast fixes a warning that gets promoted to an
error when running with KVM's newfangled -Werror setting.

  arch/x86/kvm/x86.c:9739:9: error: large integer implicitly truncated
  to unsigned type [-Werror=overflow]

Fixes: a3e967c0b87d3 ("KVM: Terminate memslot walks via used_slots"
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/x86.c

index ba4d476..fa03f31 100644 (file)
@@ -9735,8 +9735,12 @@ int __x86_set_memory_region(struct kvm *kvm, int id, gpa_t gpa, u32 size)
                if (!slot || !slot->npages)
                        return 0;
 
-               /* Stuff a non-canonical value to catch use-after-delete. */
-               hva = 0xdeadull << 48;
+               /*
+                * Stuff a non-canonical value to catch use-after-delete.  This
+                * ends up being 0 on 32-bit KVM, but there's no better
+                * alternative.
+                */
+               hva = (unsigned long)(0xdeadull << 48);
                old_npages = slot->npages;
        }