]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
KVM: arm64: Simplify return logic in user_mem_abort()
authorFuad Tabba <tabba@google.com>
Fri, 6 Mar 2026 14:02:28 +0000 (14:02 +0000)
committerMarc Zyngier <maz@kernel.org>
Sat, 28 Mar 2026 11:29:40 +0000 (11:29 +0000)
With the refactoring done, the final return block of user_mem_abort()
can be tidied up a bit more.

Clean up the trailing edge by dropping the unnecessary assignment,
collapsing the return evaluation for kvm_s2_fault_compute_prot(), and
tail calling kvm_s2_fault_map() directly.

Signed-off-by: Fuad Tabba <tabba@google.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/mmu.c

index ee653dd4eb27cb50faa5e93e685680e1e614f1d3..c5ac9bd87b996eb36e317e7bdd1fa66f513e1fb1 100644 (file)
@@ -2005,22 +2005,13 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
        if (ret != 1)
                return ret;
 
-       ret = 0;
-
        ret = kvm_s2_fault_compute_prot(fault);
-       if (ret == 1) {
-               ret = 1; /* fault injected */
-               goto out_put_page;
+       if (ret) {
+               kvm_release_page_unused(fault->page);
+               return ret;
        }
-       if (ret)
-               goto out_put_page;
 
-       ret = kvm_s2_fault_map(fault, memcache);
-       return ret;
-
-out_put_page:
-       kvm_release_page_unused(fault->page);
-       return ret;
+       return kvm_s2_fault_map(fault, memcache);
 }
 
 /* Resolve the access fault by making the page young again. */