diff options
Diffstat (limited to 'virt/kvm/kvm_main.c')
-rw-r--r-- | virt/kvm/kvm_main.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index cd34f73513d3..ef9a121bbd13 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -1089,12 +1089,11 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, int n) | |||
1089 | 1089 | ||
1090 | r = kvm_arch_vcpu_setup(vcpu); | 1090 | r = kvm_arch_vcpu_setup(vcpu); |
1091 | if (r) | 1091 | if (r) |
1092 | goto vcpu_destroy; | 1092 | return r; |
1093 | 1093 | ||
1094 | mutex_lock(&kvm->lock); | 1094 | mutex_lock(&kvm->lock); |
1095 | if (kvm->vcpus[n]) { | 1095 | if (kvm->vcpus[n]) { |
1096 | r = -EEXIST; | 1096 | r = -EEXIST; |
1097 | mutex_unlock(&kvm->lock); | ||
1098 | goto vcpu_destroy; | 1097 | goto vcpu_destroy; |
1099 | } | 1098 | } |
1100 | kvm->vcpus[n] = vcpu; | 1099 | kvm->vcpus[n] = vcpu; |
@@ -1110,8 +1109,8 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, int n) | |||
1110 | unlink: | 1109 | unlink: |
1111 | mutex_lock(&kvm->lock); | 1110 | mutex_lock(&kvm->lock); |
1112 | kvm->vcpus[n] = NULL; | 1111 | kvm->vcpus[n] = NULL; |
1113 | mutex_unlock(&kvm->lock); | ||
1114 | vcpu_destroy: | 1112 | vcpu_destroy: |
1113 | mutex_unlock(&kvm->lock); | ||
1115 | kvm_arch_vcpu_destroy(vcpu); | 1114 | kvm_arch_vcpu_destroy(vcpu); |
1116 | return r; | 1115 | return r; |
1117 | } | 1116 | } |