From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH] KVM: MMU: Fix overflow of SHADOW_PT_INDEX with EPT in 32pae Date: Mon, 01 Sep 2008 12:40:04 +0300 Message-ID: <48BBB874.5040604@qumranet.com> References: <200809011732.55508.sheng.yang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: "Yang, Sheng" Return-path: Received: from il.qumranet.com ([212.179.150.194]:11701 "EHLO il.qumranet.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751161AbYIAJkG (ORCPT ); Mon, 1 Sep 2008 05:40:06 -0400 In-Reply-To: <200809011732.55508.sheng.yang@intel.com> Sender: kvm-owner@vger.kernel.org List-ID: Yang, Sheng wrote: > From: Sheng Yang > Date: Mon, 1 Sep 2008 17:28:59 +0800 > Subject: [PATCH] KVM: MMU: Fix overflow of SHADOW_PT_INDEX with EPT in 32pae > > EPT is 4 level by default in 32pae (48bits), but virtual address only > got 32 bits. This result in SHADOW_PT_INDEX() overflow when try to > fetch level 4 index. > > Fix it by extend virtual address to 64bits in any condition. > > Good catch. > Signed-off-by: Sheng Yang > --- > arch/x86/kvm/mmu.c | 8 +++++++- > 1 files changed, 7 insertions(+), 1 deletions(-) > > diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c > index f33c594..8ca9aad 100644 > --- a/arch/x86/kvm/mmu.c > +++ b/arch/x86/kvm/mmu.c > @@ -943,6 +943,7 @@ static int walk_shadow(struct kvm_shadow_walk *walker, > int level; > int r; > u64 *sptep; > + u64 ext_addr = addr; > addr isn't really a gva_t; it is a pga_t when using direct mappings. So how about changing walk_shadow() and its callbacks to use u64 instead of gva_t instead? -- error compiling committee.c: too many arguments to function