From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1L9kab-0001mP-Gy for qemu-devel@nongnu.org; Mon, 08 Dec 2008 13:12:13 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1L9kaa-0001m7-Vv for qemu-devel@nongnu.org; Mon, 08 Dec 2008 13:12:13 -0500 Received: from [199.232.76.173] (port=41574 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L9kaa-0001m4-SM for qemu-devel@nongnu.org; Mon, 08 Dec 2008 13:12:12 -0500 Received: from savannah.gnu.org ([199.232.41.3]:38505 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1L9kaa-0003ZW-KV for qemu-devel@nongnu.org; Mon, 08 Dec 2008 13:12:12 -0500 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1L9kaa-0001Xh-AN for qemu-devel@nongnu.org; Mon, 08 Dec 2008 18:12:12 +0000 Received: from aurel32 by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1L9kaa-0001Xc-3p for qemu-devel@nongnu.org; Mon, 08 Dec 2008 18:12:12 +0000 MIME-Version: 1.0 Errors-To: aurel32 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Aurelien Jarno Message-Id: Date: Mon, 08 Dec 2008 18:12:12 +0000 Subject: [Qemu-devel] [5955] linux-user: Safety belt for h2g Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 5955 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5955 Author: aurel32 Date: 2008-12-08 18:12:11 +0000 (Mon, 08 Dec 2008) Log Message: ----------- linux-user: Safety belt for h2g 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). Based on a patch from Jan Kiszka Signed-off-by: Kirill A. Shutemov Acked-by: Edgar E. Iglesias Signed-off-by: Aurelien Jarno Modified Paths: -------------- trunk/cpu-all.h Modified: trunk/cpu-all.h =================================================================== --- trunk/cpu-all.h 2008-12-08 18:12:04 UTC (rev 5954) +++ trunk/cpu-all.h 2008-12-08 18:12:11 UTC (rev 5955) @@ -621,6 +621,9 @@ /* 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 @@ /* 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)