Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f51770ed authored by Tang Chen's avatar Tang Chen Committed by Paolo Bonzini
Browse files

kvm: Make init_rmode_identity_map() return 0 on success.



In init_rmode_identity_map(), there two variables indicating the return
value, r and ret, and it return 0 on error, 1 on success. The function
is only called by vmx_create_vcpu(), and ret is redundant.

This patch removes the redundant variable, and makes init_rmode_identity_map()
return 0 on success, -errno on failure.

Signed-off-by: default avatarTang Chen <tangchen@cn.fujitsu.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent a255d479
Loading
Loading
Loading
Loading
+8 −10
Original line number Original line Diff line number Diff line
@@ -3963,25 +3963,23 @@ static int init_rmode_tss(struct kvm *kvm)


static int init_rmode_identity_map(struct kvm *kvm)
static int init_rmode_identity_map(struct kvm *kvm)
{
{
	int i, idx, r, ret = 0;
	int i, idx, r = 0;
	pfn_t identity_map_pfn;
	pfn_t identity_map_pfn;
	u32 tmp;
	u32 tmp;


	if (!enable_ept)
	if (!enable_ept)
		return 1;
		return 0;


	/* Protect kvm->arch.ept_identity_pagetable_done. */
	/* Protect kvm->arch.ept_identity_pagetable_done. */
	mutex_lock(&kvm->slots_lock);
	mutex_lock(&kvm->slots_lock);


	if (likely(kvm->arch.ept_identity_pagetable_done)) {
	if (likely(kvm->arch.ept_identity_pagetable_done))
		ret = 1;
		goto out2;
		goto out2;
	}


	identity_map_pfn = kvm->arch.ept_identity_map_addr >> PAGE_SHIFT;
	identity_map_pfn = kvm->arch.ept_identity_map_addr >> PAGE_SHIFT;


	r = alloc_identity_pagetable(kvm);
	r = alloc_identity_pagetable(kvm);
	if (r)
	if (r < 0)
		goto out2;
		goto out2;


	idx = srcu_read_lock(&kvm->srcu);
	idx = srcu_read_lock(&kvm->srcu);
@@ -3998,13 +3996,13 @@ static int init_rmode_identity_map(struct kvm *kvm)
			goto out;
			goto out;
	}
	}
	kvm->arch.ept_identity_pagetable_done = true;
	kvm->arch.ept_identity_pagetable_done = true;
	ret = 1;

out:
out:
	srcu_read_unlock(&kvm->srcu, idx);
	srcu_read_unlock(&kvm->srcu, idx);


out2:
out2:
	mutex_unlock(&kvm->slots_lock);
	mutex_unlock(&kvm->slots_lock);
	return ret;
	return r;
}
}


static void seg_setup(int seg)
static void seg_setup(int seg)
@@ -7756,8 +7754,8 @@ static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id)
		if (!kvm->arch.ept_identity_map_addr)
		if (!kvm->arch.ept_identity_map_addr)
			kvm->arch.ept_identity_map_addr =
			kvm->arch.ept_identity_map_addr =
				VMX_EPT_IDENTITY_PAGETABLE_ADDR;
				VMX_EPT_IDENTITY_PAGETABLE_ADDR;
		err = -ENOMEM;
		err = init_rmode_identity_map(kvm);
		if (!init_rmode_identity_map(kvm))
		if (err)
			goto free_vmcs;
			goto free_vmcs;
	}
	}