KVM: arm64: nv: Handle TLBI S1E2 for VNCR invalidation with mmu_lock held
authorMarc Zyngier <maz@kernel.org>
Wed, 21 May 2025 09:58:29 +0000 (10:58 +0100)
committerMarc Zyngier <maz@kernel.org>
Wed, 21 May 2025 10:40:12 +0000 (11:40 +0100)
Calling invalidate_vncr_va() without the mmu_lock held for write
is a bad idea, and lockdep tells you about that.

Fixes: 4ffa72ad8f37e ("KVM: arm64: nv: Add S1 TLB invalidation primitive for VNCR_EL2")
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/nested.c

index 56b732003caa7e1cf7af7a337bac833beda2646e..2381663d2ee981f7f22c4d5dbb088e2a60b24035 100644 (file)
@@ -1044,6 +1044,8 @@ void kvm_handle_s1e2_tlbi(struct kvm_vcpu *vcpu, u32 inst, u64 val)
        struct s1e2_tlbi_scope scope = {};
 
        compute_s1_tlbi_range(vcpu, inst, val, &scope);
+
+       guard(write_lock)(&vcpu->kvm->mmu_lock);
        invalidate_vncr_va(vcpu->kvm, &scope);
 }