KVM: x86: Fix apic dangling pointer in vcpu
authorSaar Amar <saaramar@microsoft.com>
Mon, 6 May 2019 08:29:16 +0000 (11:29 +0300)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 20 Jun 2019 12:23:17 +0000 (14:23 +0200)
The function kvm_create_lapic() attempts to allocate the apic structure
and sets a pointer to it in the virtual processor structure. However, if
get_zeroed_page() failed, the function frees the apic chunk, but forgets
to set the pointer in the vcpu to NULL. It's not a security issue since
there isn't a use of that pointer if kvm_create_lapic() returns error,
but it's more accurate that way.

Signed-off-by: Saar Amar <saaramar@microsoft.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/lapic.c

index e82a18c..d6ca5c4 100644 (file)
@@ -2339,6 +2339,7 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu, int timer_advance_ns)
        return 0;
 nomem_free_apic:
        kfree(apic);
+       vcpu->arch.apic = NULL;
 nomem:
        return -ENOMEM;
 }