On Tue, Aug 06, 2019 at 08:01:48AM +0200, Vitaly Kuznetsov wrote: > When doing x86_emulate_instruction(EMULTYPE_SKIP) interrupt shadow has to > be cleared if and only if the skipping is successful. > > There are two immediate issues: > - In SVM skip_emulated_instruction() we are not zapping interrupt shadow > in case kvm_emulate_instruction(EMULTYPE_SKIP) is used to advance RIP > (!nrpip_save). > - In VMX handle_ept_misconfig() when running as a nested hypervisor we > (static_cpu_has(X86_FEATURE_HYPERVISOR) case) we forget to clear Redundant 'we'. Might be worth adding a blurb in the changelog to note that this intentionally doesn't handle "MOV/POP SS" as skip-emulation of those instructions can only occur if the guest is doing something silly. Reviewed-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > interrupt shadow. > > Suggested-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > --- > arch/x86/kvm/x86.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index c6d951cbd76c..eac8253d84d2 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -6537,6 +6537,7 @@ int x86_emulate_instruction(struct kvm_vcpu *vcpu, > kvm_rip_write(vcpu, ctxt->_eip); > if (ctxt->eflags & X86_EFLAGS_RF) > kvm_set_rflags(vcpu, ctxt->eflags & ~X86_EFLAGS_RF); > + kvm_x86_ops->set_interrupt_shadow(vcpu, 0); > return EMULATE_DONE; > } > > -- > 2.20.1 >