From: Krish Sadhukhan Date: Thu, 9 Apr 2020 20:50:33 +0000 (-0400) Subject: KVM: nSVM: Check for CR0.CD and CR0.NW on VMRUN of nested guests X-Git-Tag: v5.8-rc1~168^2~148 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4f233371f6bb1578340b6c7034ddf7b76606d4ae;p=thirdparty%2Fkernel%2Flinux.git KVM: nSVM: Check for CR0.CD and CR0.NW on VMRUN of nested guests According to section "Canonicalization and Consistency Checks" in APM vol. 2, the following guest state combination is illegal: "CR0.CD is zero and CR0.NW is set" Signed-off-by: Krish Sadhukhan Message-Id: <20200409205035.16830-2-krish.sadhukhan@oracle.com> Signed-off-by: Paolo Bonzini --- diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index c62893102777b..3e5bd739a6f67 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -207,6 +207,10 @@ static bool nested_vmcb_checks(struct vmcb *vmcb) if ((vmcb->save.efer & EFER_SVME) == 0) return false; + if (((vmcb->save.cr0 & X86_CR0_CD) == 0) && + (vmcb->save.cr0 & X86_CR0_NW)) + return false; + if ((vmcb->control.intercept & (1ULL << INTERCEPT_VMRUN)) == 0) return false;