diff options
Diffstat (limited to 'virt/kvm/coalesced_mmio.c')
-rw-r--r-- | virt/kvm/coalesced_mmio.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/virt/kvm/coalesced_mmio.c b/virt/kvm/coalesced_mmio.c index 0352f81ecc0b..04d69cd7049b 100644 --- a/virt/kvm/coalesced_mmio.c +++ b/virt/kvm/coalesced_mmio.c | |||
@@ -92,6 +92,7 @@ static const struct kvm_io_device_ops coalesced_mmio_ops = { | |||
92 | int kvm_coalesced_mmio_init(struct kvm *kvm) | 92 | int kvm_coalesced_mmio_init(struct kvm *kvm) |
93 | { | 93 | { |
94 | struct kvm_coalesced_mmio_dev *dev; | 94 | struct kvm_coalesced_mmio_dev *dev; |
95 | int ret; | ||
95 | 96 | ||
96 | dev = kzalloc(sizeof(struct kvm_coalesced_mmio_dev), GFP_KERNEL); | 97 | dev = kzalloc(sizeof(struct kvm_coalesced_mmio_dev), GFP_KERNEL); |
97 | if (!dev) | 98 | if (!dev) |
@@ -100,9 +101,12 @@ int kvm_coalesced_mmio_init(struct kvm *kvm) | |||
100 | kvm_iodevice_init(&dev->dev, &coalesced_mmio_ops); | 101 | kvm_iodevice_init(&dev->dev, &coalesced_mmio_ops); |
101 | dev->kvm = kvm; | 102 | dev->kvm = kvm; |
102 | kvm->coalesced_mmio_dev = dev; | 103 | kvm->coalesced_mmio_dev = dev; |
103 | kvm_io_bus_register_dev(kvm, &kvm->mmio_bus, &dev->dev); | ||
104 | 104 | ||
105 | return 0; | 105 | ret = kvm_io_bus_register_dev(kvm, &kvm->mmio_bus, &dev->dev); |
106 | if (ret < 0) | ||
107 | kfree(dev); | ||
108 | |||
109 | return ret; | ||
106 | } | 110 | } |
107 | 111 | ||
108 | int kvm_vm_ioctl_register_coalesced_mmio(struct kvm *kvm, | 112 | int kvm_vm_ioctl_register_coalesced_mmio(struct kvm *kvm, |