From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:52855) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S4twf-0004EO-QH for qemu-devel@nongnu.org; Tue, 06 Mar 2012 07:56:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S4twV-0003A9-B5 for qemu-devel@nongnu.org; Tue, 06 Mar 2012 07:56:49 -0500 Received: from mx1.redhat.com ([209.132.183.28]:44196) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S4twV-00039u-3j for qemu-devel@nongnu.org; Tue, 06 Mar 2012 07:56:39 -0500 Message-ID: <4F560980.2060803@redhat.com> Date: Tue, 06 Mar 2012 14:56:32 +0200 From: Avi Kivity MIME-Version: 1.0 References: <4F5601BF.3070107@siemens.com> In-Reply-To: <4F5601BF.3070107@siemens.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] target-i386: Mask NX bit from cpu_get_phys_page_debug result List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Blue Swirl , Anthony Liguori , qemu-devel On 03/06/2012 02:23 PM, Jan Kiszka wrote: > This was a long pending bug, now revealed by the assert in > phys_page_find that stumbled over the large page index returned by > cpu_get_phys_page_debug for NX-marked pages. > > Signed-off-by: Jan Kiszka > --- > > Was easily triggerable by attaching gdb to the guest and doing some > backtraces that reached into stack addresses. > > target-i386/helper.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/target-i386/helper.c b/target-i386/helper.c > index af6bba2..40fe407 100644 > --- a/target-i386/helper.c > +++ b/target-i386/helper.c > @@ -947,7 +947,7 @@ target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr) > } > > page_offset = (addr & TARGET_PAGE_MASK) & (page_size - 1); > - paddr = (pte & TARGET_PAGE_MASK) + page_offset; > + paddr = (pte & TARGET_PAGE_MASK & ~PG_NX_MASK) + page_offset; > return paddr; > } > Should we not, in addition, mask the software available bits (53-62 IIRC)? -- error compiling committee.c: too many arguments to function