diff options
author | Vitaly Kuznetsov <vkuznets@redhat.com> | 2019-08-13 15:53:31 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2019-08-22 10:09:19 +0200 |
commit | 97413d2981bb3619a9d39f0b611318664d7231f5 (patch) | |
tree | 59386ea81b7e964cb9ecdab2e3dc189bbaaf606d /arch/x86/kvm/emulate.c | |
parent | f8ea7c6049d5d0766b84c8107583ed0094773d06 (diff) | |
download | linux-97413d2981bb3619a9d39f0b611318664d7231f5.tar.gz |
x86: KVM: clear interrupt shadow on EMULTYPE_SKIP
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) forget to clear interrupt
shadow.
Note that we intentionally don't handle the case when the skipped
instruction is supposed to prolong the interrupt shadow ("MOV/POP SS") as
skip-emulation of those instructions should not happen under normal
circumstances.
Suggested-by: Sean Christopherson <sean.j.christopherson@intel.com>
Reviewed-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch/x86/kvm/emulate.c')
0 files changed, 0 insertions, 0 deletions