From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1L93Od-0004I5-2Q for qemu-devel@nongnu.org; Sat, 06 Dec 2008 15:04:59 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1L93Oa-0004Gj-U2 for qemu-devel@nongnu.org; Sat, 06 Dec 2008 15:04:58 -0500 Received: from [199.232.76.173] (port=46237 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L93Oa-0004GZ-NN for qemu-devel@nongnu.org; Sat, 06 Dec 2008 15:04:56 -0500 Received: from bart.se.axis.com ([195.60.68.10]:34379) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1L93Oa-0006H1-21 for qemu-devel@nongnu.org; Sat, 06 Dec 2008 15:04:56 -0500 Received: from bart.se.axis.com (bart.se.axis.com [127.0.0.1]) by bart.se.axis.com (Postfix) with ESMTP id 6AC236425C for ; Sat, 6 Dec 2008 21:04:55 +0100 (CET) Received: from axis.com (edgar.se.axis.com [10.93.151.1]) by bart.se.axis.com (Postfix) with ESMTP id 5CC6C64252 for ; Sat, 6 Dec 2008 21:04:55 +0100 (CET) Date: Sat, 6 Dec 2008 21:04:55 +0100 From: "Edgar E. Iglesias" Subject: Re: [Qemu-devel] [PATCH] linux-user: Safety belt for h2g Message-ID: <20081206200455.GC1167@edgar.se.axis.com> References: <1228303789-25653-1-git-send-email-kirill@shutemov.name> <1228303789-25653-2-git-send-email-kirill@shutemov.name> <1228303789-25653-3-git-send-email-kirill@shutemov.name> <1228303789-25653-4-git-send-email-kirill@shutemov.name> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1228303789-25653-4-git-send-email-kirill@shutemov.name> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Kirill A. Shutemov" Cc: Jan Kiszka , qemu-devel@nongnu.org On Wed, Dec 03, 2008 at 01:29:39PM +0200, Kirill A. Shutemov wrote: > From: Jan Kiszka > > h2g can only work on 64-bit hosts if the provided address is mappable to > the guest range. Neglecting this was already the source for several > bugs. Instrument the macro so that it will trigger earlier in the > future (at least as long as we have this kind of mapping mechanism). > > Signed-off-by: Jan Kiszka > Signed-off-by: Kirill A. Shutemov Acked-by: Edgar E. Iglesias > --- > cpu-all.h | 10 +++++++++- > 1 files changed, 9 insertions(+), 1 deletions(-) > > diff --git a/cpu-all.h b/cpu-all.h > index 73c7b4c..526ace2 100644 > --- a/cpu-all.h > +++ b/cpu-all.h > @@ -621,6 +621,9 @@ static inline void stfq_be_p(void *ptr, float64 v) > /* MMU memory access macros */ > > #if defined(CONFIG_USER_ONLY) > +#include > +#include "qemu-types.h" > + > /* On some host systems the guest address space is reserved on the host. > * This allows the guest address space to be offset to a convenient location. > */ > @@ -629,7 +632,12 @@ static inline void stfq_be_p(void *ptr, float64 v) > > /* All direct uses of g2h and h2g need to go away for usermode softmmu. */ > #define g2h(x) ((void *)((unsigned long)(x) + GUEST_BASE)) > -#define h2g(x) ((target_ulong)((unsigned long)(x) - GUEST_BASE)) > +#define h2g(x) ({ \ > + unsigned long __ret = (unsigned long)(x) - GUEST_BASE; \ > + /* Check if given address fits target address space */ \ > + assert(__ret == (abi_ulong)__ret); \ > + (abi_ulong)__ret; \ > +}) > > #define saddr(x) g2h(x) > #define laddr(x) g2h(x) > -- > 1.6.0.2.GIT