Commit 3b82b8d7 authored by Sean Christopherson's avatar Sean Christopherson Committed by Paolo Bonzini

KVM: x86: WARN on injected+pending exception even in nested case

WARN if a pending exception is coincident with an injected exception
before calling check_nested_events() so that the WARN will fire even if
inject_pending_event() bails early because check_nested_events() detects
the conflict.  Bailing early isn't problematic (quite the opposite), but
suppressing the WARN is undesirable as it could mask a bug elsewhere in
KVM.
Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
Message-Id: <20200423022550.15113-11-sean.j.christopherson@intel.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 221e7610
...@@ -7713,6 +7713,9 @@ static int inject_pending_event(struct kvm_vcpu *vcpu) ...@@ -7713,6 +7713,9 @@ static int inject_pending_event(struct kvm_vcpu *vcpu)
kvm_x86_ops.set_irq(vcpu); kvm_x86_ops.set_irq(vcpu);
} }
WARN_ON_ONCE(vcpu->arch.exception.injected &&
vcpu->arch.exception.pending);
/* /*
* Call check_nested_events() even if we reinjected a previous event * Call check_nested_events() even if we reinjected a previous event
* in order for caller to determine if it should require immediate-exit * in order for caller to determine if it should require immediate-exit
...@@ -7731,7 +7734,6 @@ static int inject_pending_event(struct kvm_vcpu *vcpu) ...@@ -7731,7 +7734,6 @@ static int inject_pending_event(struct kvm_vcpu *vcpu)
vcpu->arch.exception.has_error_code, vcpu->arch.exception.has_error_code,
vcpu->arch.exception.error_code); vcpu->arch.exception.error_code);
WARN_ON_ONCE(vcpu->arch.exception.injected);
vcpu->arch.exception.pending = false; vcpu->arch.exception.pending = false;
vcpu->arch.exception.injected = true; vcpu->arch.exception.injected = true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment