# HG changeset patch # User gingold@virtu10 # Node ID 194bb24d456da885670dfb0022f15f87c15ac0fd # Parent 2bfd19fc1b79c6a6712c99f875f1fbf883af3f35 Prevent domains to itc/ptd in shared_info_va. Signed-off-by: Tristan Gingold diff -r 2bfd19fc1b79 -r 194bb24d456d xen/arch/ia64/xen/vcpu.c --- a/xen/arch/ia64/xen/vcpu.c Sun Oct 01 19:10:18 2006 -0600 +++ b/xen/arch/ia64/xen/vcpu.c Mon Oct 02 13:31:13 2006 +0200 @@ -1314,12 +1314,21 @@ static inline void static inline void check_xen_space_overlap (const char *func, u64 base, u64 page_size) { + /* Overlaps can occur only in region 7. + (This is an optimization to bypass all the checks). */ + if (REGION_NUMBER (base) != 7) + return; + /* Mask LSBs of base. */ base &= ~(page_size - 1); /* FIXME: ideally an MCA should be generated... */ if (range_overlap (HYPERVISOR_VIRT_START, HYPERVISOR_VIRT_END, - base, base + page_size)) + base, base + page_size) + || range_overlap (current->domain->arch.shared_info_va, + current->domain->arch.shared_info_va + + XSI_SIZE + XMAPPEDREGS_SIZE, + base, base + page_size)) panic_domain (NULL, "%s on Xen virtual space (%lx)\n", func, base); } diff -r 2bfd19fc1b79 -r 194bb24d456d xen/include/public/arch-ia64.h --- a/xen/include/public/arch-ia64.h Sun Oct 01 19:10:18 2006 -0600 +++ b/xen/include/public/arch-ia64.h Mon Oct 02 13:31:13 2006 +0200 @@ -400,6 +400,7 @@ struct xen_ia64_boot_param { #define XSI_SIZE (1 << XSI_SHIFT) /* Log size of mapped_regs area (64 KB - only 4KB is used). */ #define XMAPPEDREGS_SHIFT 12 +#define XMAPPEDREGS_SIZE (1 << XMAPPEDREGS_SHIFT) /* Offset of XASI (Xen arch shared info) wrt XSI_BASE. */ #define XMAPPEDREGS_OFS XSI_SIZE