diff options
-rw-r--r-- | virt/kvm/kvm_main.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 5ecea812cb6a..585845203db8 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -3000,8 +3000,10 @@ static int kvm_ioctl_create_device(struct kvm *kvm, | |||
3000 | if (ops->init) | 3000 | if (ops->init) |
3001 | ops->init(dev); | 3001 | ops->init(dev); |
3002 | 3002 | ||
3003 | kvm_get_kvm(kvm); | ||
3003 | ret = anon_inode_getfd(ops->name, &kvm_device_fops, dev, O_RDWR | O_CLOEXEC); | 3004 | ret = anon_inode_getfd(ops->name, &kvm_device_fops, dev, O_RDWR | O_CLOEXEC); |
3004 | if (ret < 0) { | 3005 | if (ret < 0) { |
3006 | kvm_put_kvm(kvm); | ||
3005 | mutex_lock(&kvm->lock); | 3007 | mutex_lock(&kvm->lock); |
3006 | list_del(&dev->vm_node); | 3008 | list_del(&dev->vm_node); |
3007 | mutex_unlock(&kvm->lock); | 3009 | mutex_unlock(&kvm->lock); |
@@ -3009,7 +3011,6 @@ static int kvm_ioctl_create_device(struct kvm *kvm, | |||
3009 | return ret; | 3011 | return ret; |
3010 | } | 3012 | } |
3011 | 3013 | ||
3012 | kvm_get_kvm(kvm); | ||
3013 | cd->fd = ret; | 3014 | cd->fd = ret; |
3014 | return 0; | 3015 | return 0; |
3015 | } | 3016 | } |