diff options
author | Marcelo Tosatti <mtosatti@redhat.com> | 2009-10-29 13:44:16 -0200 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2009-12-03 09:32:23 +0200 |
commit | 2204ae3c96e9a1fed50f7ee19ce092e69d7dfe82 (patch) | |
tree | 8cf0b2bb779c833b401b96e46c26f444ab70955d /arch/x86/kvm/x86.c | |
parent | 3ddea128ad75bd33e88780fe44f44c3717369b98 (diff) | |
download | lwn-2204ae3c96e9a1fed50f7ee19ce092e69d7dfe82.tar.gz lwn-2204ae3c96e9a1fed50f7ee19ce092e69d7dfe82.zip |
KVM: x86: disallow KVM_{SET,GET}_LAPIC without allocated in-kernel lapic
Otherwise kvm might attempt to dereference a NULL pointer.
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm/x86.c')
-rw-r--r-- | arch/x86/kvm/x86.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 97f6f9565ac9..cd6fe0a5797f 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -1893,6 +1893,9 @@ long kvm_arch_vcpu_ioctl(struct file *filp, switch (ioctl) { case KVM_GET_LAPIC: { + r = -EINVAL; + if (!vcpu->arch.apic) + goto out; lapic = kzalloc(sizeof(struct kvm_lapic_state), GFP_KERNEL); r = -ENOMEM; @@ -1908,6 +1911,9 @@ long kvm_arch_vcpu_ioctl(struct file *filp, break; } case KVM_SET_LAPIC: { + r = -EINVAL; + if (!vcpu->arch.apic) + goto out; lapic = kmalloc(sizeof(struct kvm_lapic_state), GFP_KERNEL); r = -ENOMEM; if (!lapic) |