[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4] x86/setup: disallow any src/dst overlaps when relocating Xen image
Commit 0d31d16 (x86/setup: do not relocate Xen over current Xen image placement) disallowed src/dst images overlaps when relocating Xen image. Though it deliberately allowed destination region between __image_base__ and (__image_base__ + XEN_IMG_OFFSET) overlaps with the end of source image. And here is the problem. If anything between __page_tables_start and __page_tables_end in source image lands in the overlap then some or even all page table entries may not be updated. This usually means boom in early boot which will be difficult to the investigate. So, I think that we have three choices to fix the issue: - drop XEN_IMG_OFFSET from if ( (end > s) && (end - reloc_size + XEN_IMG_OFFSET >= __pa(_end)) ) - add XEN_IMG_OFFSET to xen_phys_start in PFN_DOWN(xen_phys_start) used in loops as one of conditions, - change PFN_DOWN(xen_phys_start) to PFN_DOWN(xen_remap_end_pfn) proposed in earlier version of this patch. This patch implements the first option. This way we will avoid all kinds of overlaps which are always full can of worms. Signed-off-by: Daniel Kiper <daniel.kiper@xxxxxxxxxx> --- xen/arch/x86/setup.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index c0b97a7..b3a66f4 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -1003,7 +1003,7 @@ void __init noreturn __start_xen(unsigned long mbi_p) * Is the region size greater than zero and does it begin * at or above the end of current Xen image placement? */ - if ( (end > s) && (end - reloc_size + XEN_IMG_OFFSET >= __pa(_end)) ) + if ( (end > s) && (end - reloc_size >= __pa(_end)) ) { l4_pgentry_t *pl4e; l3_pgentry_t *pl3e; -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |