From d6f9aadf2177f4ec32cefd30343cdfcca4bfc8fa Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Thu, 13 Nov 2014 09:58:11 +0100 Subject: [PATCH] VMX: values written to MSR_IA32_SYSENTER_E[IS]P should be canonical A recent KVM change by Nadav Amit helped spot that we have the same issue as they did. Signed-off-by: Jan Beulich Reviewed-by: Tim Deegan Reviewed-by: Andrew Cooper Acked-by: Kevin Tian master commit: 93cc5c6f1641e90eb120826d42f103b7726efb8e master date: 2014-10-31 11:31:11 +0100 --- xen/arch/x86/hvm/vmx/vmx.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 7a2f052b74..9c5ec60ca9 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -2146,9 +2146,13 @@ static int vmx_msr_write_intercept(unsigned int msr, uint64_t msr_content) __vmwrite(GUEST_SYSENTER_CS, msr_content); break; case MSR_IA32_SYSENTER_ESP: + if ( !is_canonical_address(msr_content) ) + goto gp_fault; __vmwrite(GUEST_SYSENTER_ESP, msr_content); break; case MSR_IA32_SYSENTER_EIP: + if ( !is_canonical_address(msr_content) ) + goto gp_fault; __vmwrite(GUEST_SYSENTER_EIP, msr_content); break; case MSR_IA32_DEBUGCTLMSR: {