[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/6] Use TARGET_VIRT_ADDR_SPACE_BITS in h2g_valid.
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH 2/6] Use TARGET_VIRT_ADDR_SPACE_BITS in h2g_valid. |
Date: |
Wed, 10 Mar 2010 14:36:58 -0800 |
Previously, only 32-bit guests had a proper check for the
validity of the virtual address. Extend that check to 64-bit
guests with a restricted virtual address space.
Signed-off-by: Richard Henderson <address@hidden>
---
cpu-all.h | 16 +++++++++++-----
1 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/cpu-all.h b/cpu-all.h
index 9823c24..68848e9 100644
--- a/cpu-all.h
+++ b/cpu-all.h
@@ -634,16 +634,22 @@ extern int have_guest_base;
/* All direct uses of g2h and h2g need to go away for usermode softmmu. */
#define g2h(x) ((void *)((unsigned long)(x) + GUEST_BASE))
+
+#if HOST_LONG_BITS <= TARGET_VIRT_ADDR_SPACE_BITS
+#define h2g_valid(x) 1
+#else
+#define h2g_valid(x) ({ \
+ unsigned long __guest = (unsigned long)(x) - GUEST_BASE; \
+ __guest < (1ul << TARGET_VIRT_ADDR_SPACE_BITS); \
+})
+#endif
+
#define h2g(x) ({ \
unsigned long __ret = (unsigned long)(x) - GUEST_BASE; \
/* Check if given address fits target address space */ \
- assert(__ret == (abi_ulong)__ret); \
+ assert(h2g_valid(x)); \
(abi_ulong)__ret; \
})
-#define h2g_valid(x) ({ \
- unsigned long __guest = (unsigned long)(x) - GUEST_BASE; \
- (__guest == (abi_ulong)__guest); \
-})
#define saddr(x) g2h(x)
#define laddr(x) g2h(x)
--
1.6.6.1
- [Qemu-devel] [PATCH 0/6] Multi-level page tables and userland mapping fixes, v3, Richard Henderson, 2010/03/10
- [Qemu-devel] [PATCH 6/6] Fix last page errors in page_check_range and page_set_flags., Richard Henderson, 2010/03/10
- [Qemu-devel] [PATCH 3/6] linux-user: Use h2g_valid in qemu_vmalloc., Richard Henderson, 2010/03/10
- [Qemu-devel] [PATCH 1/6] Move TARGET_PHYS_ADDR_SPACE_BITS to target-*/cpu.h., Richard Henderson, 2010/03/10
- [Qemu-devel] [PATCH 4/6] linux-user: Fix mmap_find_vma returning invalid addresses., Richard Henderson, 2010/03/10
- [Qemu-devel] [PATCH 2/6] Use TARGET_VIRT_ADDR_SPACE_BITS in h2g_valid.,
Richard Henderson <=
- [Qemu-devel] [PATCH 5/6] Implement multi-level page tables., Richard Henderson, 2010/03/10
- Re: [Qemu-devel] [PATCH 0/6] Multi-level page tables and userland mapping fixes, v3, Paul Brook, 2010/03/12