aboutsummaryrefslogtreecommitdiffstats
path: root/virt/kvm/ioapic.c
diff options
context:
space:
mode:
Diffstat (limited to 'virt/kvm/ioapic.c')
-rw-r--r--virt/kvm/ioapic.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/virt/kvm/ioapic.c b/virt/kvm/ioapic.c
index b91fbb215447..fa05f67423ab 100644
--- a/virt/kvm/ioapic.c
+++ b/virt/kvm/ioapic.c
@@ -342,6 +342,7 @@ static const struct kvm_io_device_ops ioapic_mmio_ops = {
342int kvm_ioapic_init(struct kvm *kvm) 342int kvm_ioapic_init(struct kvm *kvm)
343{ 343{
344 struct kvm_ioapic *ioapic; 344 struct kvm_ioapic *ioapic;
345 int ret;
345 346
346 ioapic = kzalloc(sizeof(struct kvm_ioapic), GFP_KERNEL); 347 ioapic = kzalloc(sizeof(struct kvm_ioapic), GFP_KERNEL);
347 if (!ioapic) 348 if (!ioapic)
@@ -350,7 +351,10 @@ int kvm_ioapic_init(struct kvm *kvm)
350 kvm_ioapic_reset(ioapic); 351 kvm_ioapic_reset(ioapic);
351 kvm_iodevice_init(&ioapic->dev, &ioapic_mmio_ops); 352 kvm_iodevice_init(&ioapic->dev, &ioapic_mmio_ops);
352 ioapic->kvm = kvm; 353 ioapic->kvm = kvm;
353 kvm_io_bus_register_dev(kvm, &kvm->mmio_bus, &ioapic->dev); 354 ret = kvm_io_bus_register_dev(kvm, &kvm->mmio_bus, &ioapic->dev);
354 return 0; 355 if (ret < 0)
356 kfree(ioapic);
357
358 return ret;
355} 359}
356 360