|
@@ -1933,7 +1933,7 @@ out:
|
|
|
|
|
|
int kvm_vgic_create(struct kvm *kvm)
|
|
|
{
|
|
|
- int i, vcpu_lock_idx = -1, ret = 0;
|
|
|
+ int i, vcpu_lock_idx = -1, ret;
|
|
|
struct kvm_vcpu *vcpu;
|
|
|
|
|
|
mutex_lock(&kvm->lock);
|
|
@@ -1948,6 +1948,7 @@ int kvm_vgic_create(struct kvm *kvm)
|
|
|
* vcpu->mutex. By grabbing the vcpu->mutex of all VCPUs we ensure
|
|
|
* that no other VCPUs are run while we create the vgic.
|
|
|
*/
|
|
|
+ ret = -EBUSY;
|
|
|
kvm_for_each_vcpu(i, vcpu, kvm) {
|
|
|
if (!mutex_trylock(&vcpu->mutex))
|
|
|
goto out_unlock;
|
|
@@ -1955,11 +1956,10 @@ int kvm_vgic_create(struct kvm *kvm)
|
|
|
}
|
|
|
|
|
|
kvm_for_each_vcpu(i, vcpu, kvm) {
|
|
|
- if (vcpu->arch.has_run_once) {
|
|
|
- ret = -EBUSY;
|
|
|
+ if (vcpu->arch.has_run_once)
|
|
|
goto out_unlock;
|
|
|
- }
|
|
|
}
|
|
|
+ ret = 0;
|
|
|
|
|
|
spin_lock_init(&kvm->arch.vgic.lock);
|
|
|
kvm->arch.vgic.in_kernel = true;
|