KVM: arm64: Warn when PENDING_EXCEPTION and INCREMENT_PC are set together
authorMarc Zyngier <maz@kernel.org>
Sat, 28 May 2022 11:38:25 +0000 (12:38 +0100)
committerMarc Zyngier <maz@kernel.org>
Wed, 29 Jun 2022 09:23:37 +0000 (10:23 +0100)
We really don't want PENDING_EXCEPTION and INCREMENT_PC to ever be
set at the same time, as they are mutually exclusive. Add checks
that will generate a warning should this ever happen.

Reviewed-by: Fuad Tabba <tabba@google.com>
Reviewed-by: Reiji Watanabe <reijiw@google.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/include/asm/kvm_emulate.h

index 6ec5808..9bdba47 100644 (file)
@@ -473,11 +473,13 @@ static inline unsigned long vcpu_data_host_to_guest(struct kvm_vcpu *vcpu,
 
 static __always_inline void kvm_incr_pc(struct kvm_vcpu *vcpu)
 {
+       WARN_ON(vcpu_get_flag(vcpu, PENDING_EXCEPTION));
        vcpu_set_flag(vcpu, INCREMENT_PC);
 }
 
 #define kvm_pend_exception(v, e)                                       \
        do {                                                            \
+               WARN_ON(vcpu_get_flag((v), INCREMENT_PC));              \
                vcpu_set_flag((v), PENDING_EXCEPTION);                  \
                vcpu_set_flag((v), e);                                  \
        } while (0)