KVM: arm64: pauth: Use ctxt_sys_reg() instead of raw sys_regs access
authorMarc Zyngier <maz@kernel.org>
Fri, 5 Jul 2019 10:21:27 +0000 (11:21 +0100)
committerMarc Zyngier <maz@kernel.org>
Tue, 7 Jul 2020 08:28:37 +0000 (09:28 +0100)
Now that we have a wrapper for the sysreg accesses, let's use that
consistently.

Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/hyp/include/hyp/switch.h

index 7cf14e4f9f77e84e594ae42d6e16020ddf392b6a..70367699d69a1540b3f250fd82570c8ecc1cecf4 100644 (file)
@@ -364,11 +364,14 @@ static inline bool esr_is_ptrauth_trap(u32 esr)
        return false;
 }
 
-#define __ptrauth_save_key(regs, key)                                          \
-({                                                                             \
-       regs[key ## KEYLO_EL1] = read_sysreg_s(SYS_ ## key ## KEYLO_EL1);       \
-       regs[key ## KEYHI_EL1] = read_sysreg_s(SYS_ ## key ## KEYHI_EL1);       \
-})
+#define __ptrauth_save_key(ctxt, key)                                  \
+       do {                                                            \
+       u64 __val;                                                      \
+       __val = read_sysreg_s(SYS_ ## key ## KEYLO_EL1);                \
+       ctxt_sys_reg(ctxt, key ## KEYLO_EL1) = __val;                   \
+       __val = read_sysreg_s(SYS_ ## key ## KEYHI_EL1);                \
+       ctxt_sys_reg(ctxt, key ## KEYHI_EL1) = __val;                   \
+} while(0)
 
 static inline bool __hyp_handle_ptrauth(struct kvm_vcpu *vcpu)
 {
@@ -380,11 +383,11 @@ static inline bool __hyp_handle_ptrauth(struct kvm_vcpu *vcpu)
                return false;
 
        ctxt = &__hyp_this_cpu_ptr(kvm_host_data)->host_ctxt;
-       __ptrauth_save_key(ctxt->sys_regs, APIA);
-       __ptrauth_save_key(ctxt->sys_regs, APIB);
-       __ptrauth_save_key(ctxt->sys_regs, APDA);
-       __ptrauth_save_key(ctxt->sys_regs, APDB);
-       __ptrauth_save_key(ctxt->sys_regs, APGA);
+       __ptrauth_save_key(ctxt, APIA);
+       __ptrauth_save_key(ctxt, APIB);
+       __ptrauth_save_key(ctxt, APDA);
+       __ptrauth_save_key(ctxt, APDB);
+       __ptrauth_save_key(ctxt, APGA);
 
        vcpu_ptrauth_enable(vcpu);