X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=virt%2Fkvm%2Fkvm_main.c;h=585845203db89e5d2bc90722fd75bfcf595671d9;hb=df3865f8f56879b7e9f0ca47fa7bc5f2252df6d3;hp=5ecea812cb6a24056ee5ab42aa585cb7f5ce15ab;hpb=09c2fe608a2608f9c7de7928f96f0ebc6197e195;p=uclinux-h8%2Flinux.git 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, if (ops->init) ops->init(dev); + kvm_get_kvm(kvm); ret = anon_inode_getfd(ops->name, &kvm_device_fops, dev, O_RDWR | O_CLOEXEC); if (ret < 0) { + kvm_put_kvm(kvm); mutex_lock(&kvm->lock); list_del(&dev->vm_node); mutex_unlock(&kvm->lock); @@ -3009,7 +3011,6 @@ static int kvm_ioctl_create_device(struct kvm *kvm, return ret; } - kvm_get_kvm(kvm); cd->fd = ret; return 0; }