Gentle ping. > On 25 Jun 2019, at 16:11, Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> wrote: > > Liran Alon <liran.alon@xxxxxxxxxx> writes: > >> As comment in code specifies, SMM temporarily disables VMX so we cannot >> be in guest mode, nor can VMLAUNCH/VMRESUME be pending. >> >> However, code currently assumes that these are the only flags that can be >> set on kvm_state->flags. This is not true as KVM_STATE_NESTED_EVMCS >> can also be set on this field to signal that eVMCS should be enabled. >> >> Therefore, fix code to check for guest-mode and pending VMLAUNCH/VMRESUME >> explicitly. >> >> Reviewed-by: Joao Martins <joao.m.martins@xxxxxxxxxx> >> Signed-off-by: Liran Alon <liran.alon@xxxxxxxxxx> >> --- >> arch/x86/kvm/vmx/nested.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c >> index 5c470db311f7..27ff04874f67 100644 >> --- a/arch/x86/kvm/vmx/nested.c >> +++ b/arch/x86/kvm/vmx/nested.c >> @@ -5373,7 +5373,10 @@ static int vmx_set_nested_state(struct kvm_vcpu *vcpu, >> * nor can VMLAUNCH/VMRESUME be pending. Outside SMM, SMM flags >> * must be zero. >> */ >> - if (is_smm(vcpu) ? kvm_state->flags : kvm_state->hdr.vmx.smm.flags) >> + if (is_smm(vcpu) ? >> + (kvm_state->flags & >> + (KVM_STATE_NESTED_GUEST_MODE | KVM_STATE_NESTED_RUN_PENDING)) >> + : kvm_state->hdr.vmx.smm.flags) >> return -EINVAL; >> >> if ((kvm_state->hdr.vmx.smm.flags & KVM_STATE_NESTED_SMM_GUEST_MODE) && > > Reviewed-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > > -- > Vitaly