]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: SVM: Set sev->asid in sev_asid_new() instead of overloading the return
authorSean Christopherson <seanjc@google.com>
Wed, 31 Jan 2024 23:56:06 +0000 (15:56 -0800)
committerSean Christopherson <seanjc@google.com>
Tue, 6 Feb 2024 19:08:44 +0000 (11:08 -0800)
Explicitly set sev->asid in sev_asid_new() when a new ASID is successfully
allocated, and return '0' to indicate success instead of overloading the
return value to multiplex the ASID with error codes.  There is exactly one
caller of sev_asid_new(), and sev_asid_free() already consumes sev->asid,
i.e. returning the ASID isn't necessary for flexibility, nor does it
provide symmetry between related APIs.

Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Link: https://lore.kernel.org/r/20240131235609.4161407-2-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/svm/sev.c

index f760106c31f8a58d2941dbabd82531b9779089fa..7c000088bca6102d29d9718389fe2afbf551a05e 100644 (file)
@@ -179,7 +179,8 @@ again:
 
        mutex_unlock(&sev_bitmap_lock);
 
-       return asid;
+       sev->asid = asid;
+       return 0;
 e_uncharge:
        sev_misc_cg_uncharge(sev);
        put_misc_cg(sev->misc_cg);
@@ -246,7 +247,7 @@ static void sev_unbind_asid(struct kvm *kvm, unsigned int handle)
 static int sev_guest_init(struct kvm *kvm, struct kvm_sev_cmd *argp)
 {
        struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
-       int asid, ret;
+       int ret;
 
        if (kvm->created_vcpus)
                return -EINVAL;
@@ -257,10 +258,9 @@ static int sev_guest_init(struct kvm *kvm, struct kvm_sev_cmd *argp)
 
        sev->active = true;
        sev->es_active = argp->id == KVM_SEV_ES_INIT;
-       asid = sev_asid_new(sev);
-       if (asid < 0)
+       ret = sev_asid_new(sev);
+       if (ret)
                goto e_no_asid;
-       sev->asid = asid;
 
        ret = sev_platform_init(&argp->error);
        if (ret)