| From 64c98e7f49100b637cd20a6c63508caed6bbba7a Mon Sep 17 00:00:00 2001 |
| From: Malcolm Crossley <malcolm.crossley@citrix.com> |
| Date: Mon, 28 Sep 2015 11:36:52 +0100 |
| Subject: x86/xen: Do not clip xen_e820_map to xen_e820_map_entries when |
| sanitizing map |
| |
| commit 64c98e7f49100b637cd20a6c63508caed6bbba7a upstream. |
| |
| Sanitizing the e820 map may produce extra E820 entries which would result in |
| the topmost E820 entries being removed. The removed entries would typically |
| include the top E820 usable RAM region and thus result in the domain having |
| signicantly less RAM available to it. |
| |
| Fix by allowing sanitize_e820_map to use the full size of the allocated E820 |
| array. |
| |
| Signed-off-by: Malcolm Crossley <malcolm.crossley@citrix.com> |
| Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> |
| Signed-off-by: David Vrabel <david.vrabel@citrix.com> |
| [lizf: Backported to 3.4: s/map/xen_e820_map] |
| Signed-off-by: Zefan Li <lizefan@huawei.com> |
| --- |
| arch/x86/xen/setup.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/x86/xen/setup.c |
| +++ b/arch/x86/xen/setup.c |
| @@ -274,7 +274,7 @@ char * __init xen_memory_setup(void) |
| xen_ignore_unusable(map, memmap.nr_entries); |
| |
| /* Make sure the Xen-supplied memory map is well-ordered. */ |
| - sanitize_e820_map(map, memmap.nr_entries, &memmap.nr_entries); |
| + sanitize_e820_map(map, ARRAY_SIZE(map), &memmap.nr_entries); |
| |
| max_pages = xen_get_max_pages(); |
| if (max_pages > max_pfn) |