]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
KVM: arm64: Correctly populate FAR_EL2 on nested SEA injection
authorMarc Zyngier <maz@kernel.org>
Wed, 13 Aug 2025 16:37:47 +0000 (17:37 +0100)
committerOliver Upton <oliver.upton@linux.dev>
Fri, 15 Aug 2025 18:51:18 +0000 (11:51 -0700)
vcpu_write_sys_reg()'s signature is not totally obvious, and it
is rather easy to write something that looks correct, except that...
Oh wait...

Swap addr and FAR_EL2 to restore some sanity in the nested SEA
department.

Fixes: 9aba641b9ec2a ("KVM: arm64: nv: Respect exception routing rules for SEAs")
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20250813163747.2591317-1-maz@kernel.org
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kvm/emulate-nested.c

index 90cb4b7ae0ff748453a6495b7dca1c2eb9db3893..af69c897c2c3adb1b8ae7fdebe2c1a162ca13327 100644 (file)
@@ -2833,7 +2833,7 @@ int kvm_inject_nested_sea(struct kvm_vcpu *vcpu, bool iabt, u64 addr)
                             iabt ? ESR_ELx_EC_IABT_LOW : ESR_ELx_EC_DABT_LOW);
        esr |= ESR_ELx_FSC_EXTABT | ESR_ELx_IL;
 
-       vcpu_write_sys_reg(vcpu, FAR_EL2, addr);
+       vcpu_write_sys_reg(vcpu, addr, FAR_EL2);
 
        if (__vcpu_sys_reg(vcpu, SCTLR2_EL2) & SCTLR2_EL1_EASE)
                return kvm_inject_nested(vcpu, esr, except_type_serror);