From dbe657ac049ed896c4c1773672d925f2ee5c7526 Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Thu, 25 Feb 2016 13:05:33 +0100 Subject: [PATCH] memguard: drop memguard_init() entirely The use of MAP_SMALL_PAGES causes shattering of the superpages making up the Xen virtual region, and is counter to the purpose of this series. Furthermore, it is not required for the memguard infrastructure to function (which itself uses map_pages_to_xen() for creating holes). Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich Acked-by: Stefano Stabellini --- xen/arch/x86/mm.c | 16 ---------------- xen/arch/x86/setup.c | 2 -- xen/include/asm-arm/mm.h | 1 - xen/include/asm-x86/mm.h | 2 -- 4 files changed, 21 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index d6aaed81ad..ed8ab0282c 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -6346,22 +6346,6 @@ void free_perdomain_mappings(struct domain *d) #ifdef MEMORY_GUARD -void memguard_init(void) -{ - unsigned long start = max_t(unsigned long, xen_phys_start, 1UL << 20); - map_pages_to_xen( - (unsigned long)__va(start), - start >> PAGE_SHIFT, - (__pa(&_end) + PAGE_SIZE - 1 - start) >> PAGE_SHIFT, - __PAGE_HYPERVISOR_RW|MAP_SMALL_PAGES); - BUG_ON(start != xen_phys_start); - map_pages_to_xen( - XEN_VIRT_START, - start >> PAGE_SHIFT, - (__pa(&_end) + PAGE_SIZE - 1 - start) >> PAGE_SHIFT, - __PAGE_HYPERVISOR|MAP_SMALL_PAGES); -} - static void __memguard_change_range(void *p, unsigned long l, int guard) { unsigned long _p = (unsigned long)p; diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index b8a28d7dca..cddf954c71 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -1146,8 +1146,6 @@ void __init noreturn __start_xen(unsigned long mbi_p) ~((1UL << L2_PAGETABLE_SHIFT) - 1); destroy_xen_mappings(xen_virt_end, XEN_VIRT_START + BOOTSTRAP_MAP_BASE); - memguard_init(); - nr_pages = 0; for ( i = 0; i < e820.nr_map; i++ ) if ( e820.map[i].type == E820_RAM ) diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h index 2e9d0b2286..68cf203c12 100644 --- a/xen/include/asm-arm/mm.h +++ b/xen/include/asm-arm/mm.h @@ -331,7 +331,6 @@ unsigned long domain_get_maximum_gpfn(struct domain *d); extern struct domain *dom_xen, *dom_io, *dom_cow; -#define memguard_init(_s) (_s) #define memguard_guard_stack(_p) ((void)0) #define memguard_guard_range(_p,_l) ((void)0) #define memguard_unguard_range(_p,_l) ((void)0) diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h index a097382657..23a4092220 100644 --- a/xen/include/asm-x86/mm.h +++ b/xen/include/asm-x86/mm.h @@ -479,11 +479,9 @@ extern struct rangeset *mmio_ro_ranges; #define compat_cr3_to_pfn(cr3) (((unsigned)(cr3) >> 12) | ((unsigned)(cr3) << 20)) #ifdef MEMORY_GUARD -void memguard_init(void); void memguard_guard_range(void *p, unsigned long l); void memguard_unguard_range(void *p, unsigned long l); #else -#define memguard_init() ((void)0) #define memguard_guard_range(_p,_l) ((void)0) #define memguard_unguard_range(_p,_l) ((void)0) #endif -- 2.39.5