On Thu, Aug 29, 2019 at 08:23:18AM +0000, Jan Dakinevich wrote: > inject_emulated_exception() returns true if and only if nested page > fault happens. However, page fault can come from guest page tables > walk, either nested or not nested. In both cases we should stop an > attempt to read under RIP and give guest to step over its own page > fault handler. > > Fixes: 6ea6e84 ("KVM: x86: inject exceptions produced by x86_decode_insn") Commit ids should be at least 12 chars, the full tag should be Fixes: 6ea6e84309ca ("KVM: x86: inject exceptions produced by x86_decode_insn") You can force this in your git config, e.g. git config --global core.abbrev 12 Both patches in this series should probably have Cc: <stable@xxxxxxxxxxxxxxx> Reviewed-and-tested-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > Cc: Denis Lunev <den@xxxxxxxxxxxxx> > Cc: Roman Kagan <rkagan@xxxxxxxxxxxxx> > Cc: Denis Plotnikov <dplotnikov@xxxxxxxxxxxxx> > Signed-off-by: Jan Dakinevich <jan.dakinevich@xxxxxxxxxxxxx> > --- > arch/x86/kvm/x86.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index b4cfd78..6bf7b55 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -6537,8 +6537,13 @@ int x86_emulate_instruction(struct kvm_vcpu *vcpu, > if (reexecute_instruction(vcpu, cr2, write_fault_to_spt, > emulation_type)) > return EMULATE_DONE; > - if (ctxt->have_exception && inject_emulated_exception(vcpu)) > + if (ctxt->have_exception) { > + WARN_ON_ONCE(ctxt->exception.vector == UD_VECTOR); > + WARN_ON_ONCE(exception_type(ctxt->exception.vector) > + == EXCPT_TRAP); > + inject_emulated_exception(vcpu); > return EMULATE_DONE; > + } > if (emulation_type & EMULTYPE_SKIP) > return EMULATE_FAIL; > return handle_emulation_failure(vcpu, emulation_type); > -- > 2.1.4 >