|
@@ -10492,6 +10492,7 @@ static int nested_vmx_run(struct kvm_vcpu *vcpu, bool launch)
|
|
|
{
|
|
|
struct vmcs12 *vmcs12;
|
|
|
struct vcpu_vmx *vmx = to_vmx(vcpu);
|
|
|
+ u32 interrupt_shadow = vmx_get_interrupt_shadow(vcpu);
|
|
|
u32 exit_qual;
|
|
|
int ret;
|
|
|
|
|
@@ -10516,6 +10517,12 @@ static int nested_vmx_run(struct kvm_vcpu *vcpu, bool launch)
|
|
|
* for misconfigurations which will anyway be caught by the processor
|
|
|
* when using the merged vmcs02.
|
|
|
*/
|
|
|
+ if (interrupt_shadow & KVM_X86_SHADOW_INT_MOV_SS) {
|
|
|
+ nested_vmx_failValid(vcpu,
|
|
|
+ VMXERR_ENTRY_EVENTS_BLOCKED_BY_MOV_SS);
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+
|
|
|
if (vmcs12->launch_state == launch) {
|
|
|
nested_vmx_failValid(vcpu,
|
|
|
launch ? VMXERR_VMLAUNCH_NONCLEAR_VMCS
|