|
@@ -422,9 +422,6 @@ static struct kvm *kvm_create_vm(void)
|
|
spin_lock(&kvm_lock);
|
|
spin_lock(&kvm_lock);
|
|
list_add(&kvm->vm_list, &vm_list);
|
|
list_add(&kvm->vm_list, &vm_list);
|
|
spin_unlock(&kvm_lock);
|
|
spin_unlock(&kvm_lock);
|
|
-#ifdef KVM_COALESCED_MMIO_PAGE_OFFSET
|
|
|
|
- kvm_coalesced_mmio_init(kvm);
|
|
|
|
-#endif
|
|
|
|
out:
|
|
out:
|
|
return kvm;
|
|
return kvm;
|
|
|
|
|
|
@@ -1753,12 +1750,19 @@ static struct file_operations kvm_vm_fops = {
|
|
|
|
|
|
static int kvm_dev_ioctl_create_vm(void)
|
|
static int kvm_dev_ioctl_create_vm(void)
|
|
{
|
|
{
|
|
- int fd;
|
|
|
|
|
|
+ int fd, r;
|
|
struct kvm *kvm;
|
|
struct kvm *kvm;
|
|
|
|
|
|
kvm = kvm_create_vm();
|
|
kvm = kvm_create_vm();
|
|
if (IS_ERR(kvm))
|
|
if (IS_ERR(kvm))
|
|
return PTR_ERR(kvm);
|
|
return PTR_ERR(kvm);
|
|
|
|
+#ifdef KVM_COALESCED_MMIO_PAGE_OFFSET
|
|
|
|
+ r = kvm_coalesced_mmio_init(kvm);
|
|
|
|
+ if (r < 0) {
|
|
|
|
+ kvm_put_kvm(kvm);
|
|
|
|
+ return r;
|
|
|
|
+ }
|
|
|
|
+#endif
|
|
fd = anon_inode_getfd("kvm-vm", &kvm_vm_fops, kvm, O_RDWR);
|
|
fd = anon_inode_getfd("kvm-vm", &kvm_vm_fops, kvm, O_RDWR);
|
|
if (fd < 0)
|
|
if (fd < 0)
|
|
kvm_put_kvm(kvm);
|
|
kvm_put_kvm(kvm);
|