KVM: arm/arm64: Change misleading use of is_error_pfn
authorChristoffer Dall <christoffer.dall@linaro.org>
Wed, 17 Aug 2016 08:46:10 +0000 (10:46 +0200)
committerChristoffer Dall <christoffer.dall@linaro.org>
Wed, 17 Aug 2016 09:38:03 +0000 (11:38 +0200)
When converting a gfn to a pfn, we call gfn_to_pfn_prot, which returns
various kinds of error values.  It turns out that is_error_pfn() only
returns true when the gfn was found in a memory slot and could somehow
not be used, but it does not return true if the gfn does not belong to
any memory slot.

Change use to is_error_noslot_pfn() which covers both cases.

Note: Since we already check for kvm_is_error_hva(hva) explicitly in the
caller of this function while holding the kvm->srcu lock protecting the
memory slots, this should never be a problem, but nevertheless this
change is warranted as it shows the intention of the code.

Reported-by: James Hogan <james.hogan@imgtec.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
arch/arm/kvm/mmu.c

index bda27b6b1aa2b5dc5d2e20e18f24ae41d3958ed4..29d0b23af2a9dec3b2199ac3851c9ae74b0731ee 100644 (file)
@@ -1309,7 +1309,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
        smp_rmb();
 
        pfn = gfn_to_pfn_prot(kvm, gfn, write_fault, &writable);
-       if (is_error_pfn(pfn))
+       if (is_error_noslot_pfn(pfn))
                return -EFAULT;
 
        if (kvm_is_device_pfn(pfn)) {