kvm: x86: Fix error handling in the function kvm_lapic_sync_from_vapic
authorNicholas Krause <xerofoify@gmail.com>
Wed, 5 Aug 2015 14:44:40 +0000 (10:44 -0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 11 Aug 2015 13:11:05 +0000 (15:11 +0200)
This fixes error handling in the function kvm_lapic_sync_from_vapic
by checking if the call to kvm_read_guest_cached has returned a
error code to signal to its caller the call to this function has
failed and due to this we must immediately return to the caller
of kvm_lapic_sync_from_vapic to avoid incorrectly call apic_set_tpc
if a error has occurred here.

Signed-off-by: Nicholas Krause <xerofoify@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/lapic.c

index 2a5ca97c263bb48092ea80f88c7d30120ea63b6e..9a3e342e3cda7ecfc42c86d981d791601d9615f5 100644 (file)
@@ -1900,8 +1900,9 @@ void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu)
        if (!test_bit(KVM_APIC_CHECK_VAPIC, &vcpu->arch.apic_attention))
                return;
 
-       kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.apic->vapic_cache, &data,
-                               sizeof(u32));
+       if (kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.apic->vapic_cache, &data,
+                                 sizeof(u32)))
+               return;
 
        apic_set_tpr(vcpu->arch.apic, data & 0xff);
 }