KVM: arm64: nv: Release faulted-in VNCR page from mmu_lock critical section
authorMarc Zyngier <maz@kernel.org>
Wed, 21 May 2025 10:04:11 +0000 (11:04 +0100)
committerMarc Zyngier <maz@kernel.org>
Wed, 21 May 2025 10:40:12 +0000 (11:40 +0100)
The conversion to kvm_release_faultin_page() missed the requirement
for this to be called within a critical section with mmu_lock held
for write. Move this call up to satisfy this requirement.

Fixes: 069a05e535496 ("KVM: arm64: nv: Handle VNCR_EL2-triggered faults")
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/nested.c

index 2381663d2ee981f7f22c4d5dbb088e2a60b24035..e7e71f1615f19c7e9bd3eab9b758fae2dc7b5b88 100644 (file)
@@ -1228,9 +1228,9 @@ static int kvm_translate_vncr(struct kvm_vcpu *vcpu)
                vt->cpu = -1;
 
                kvm_make_request(KVM_REQ_MAP_L1_VNCR_EL2, vcpu);
+               kvm_release_faultin_page(vcpu->kvm, page, false, vt->wr.pw);
        }
 
-       kvm_release_faultin_page(vcpu->kvm, page, false, vt->wr.pw);
        if (vt->wr.pw)
                mark_page_dirty(vcpu->kvm, gfn);