diff options
author | Julien Grall <julien.grall@linaro.org> | 2013-06-26 14:23:35 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2013-06-26 17:22:40 +0100 |
commit | de6562b4df1bce0a57bcd7cc09fc4ec494077444 (patch) | |
tree | 42b25ace4054ae8d6a4b373fdd877ed79f51d42e /tools/libxc/xc_dom_core.c | |
parent | dfeccbeaa6536ceb3303380361b7ac18e1013292 (diff) | |
download | xen-de6562b4df1bce0a57bcd7cc09fc4ec494077444.tar.gz xen-de6562b4df1bce0a57bcd7cc09fc4ec494077444.tar.bz2 xen-de6562b4df1bce0a57bcd7cc09fc4ec494077444.zip |
libxc: Fix guest boot on ARM after XSA-55
XSA-55 has exposed errors for guest creation on ARM:
- domain virt_base was not defined;
- xc_dom_alloc_segment allocates pfn from 0 instead of the RAM base address.
Signed-off-by: Julien Grall <julien.grall@linaro.org>
Diffstat (limited to 'tools/libxc/xc_dom_core.c')
-rw-r--r-- | tools/libxc/xc_dom_core.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/tools/libxc/xc_dom_core.c b/tools/libxc/xc_dom_core.c index 3df71714aa..0f367f6b8b 100644 --- a/tools/libxc/xc_dom_core.c +++ b/tools/libxc/xc_dom_core.c @@ -488,6 +488,7 @@ int xc_dom_alloc_segment(struct xc_dom_image *dom, { unsigned int page_size = XC_DOM_PAGE_SIZE(dom); xen_pfn_t pages = (size + page_size - 1) / page_size; + xen_pfn_t pfn; void *ptr; if ( start == 0 ) @@ -509,16 +510,17 @@ int xc_dom_alloc_segment(struct xc_dom_image *dom, } seg->vstart = start; - seg->pfn = (seg->vstart - dom->parms.virt_base) / page_size; + pfn = (seg->vstart - dom->parms.virt_base) / page_size; + seg->pfn = pfn + dom->rambase_pfn; if ( pages > dom->total_pages || /* multiple test avoids overflow probs */ - seg->pfn > dom->total_pages || - pages > dom->total_pages - seg->pfn) + pfn > dom->total_pages || + pages > dom->total_pages - pfn) { xc_dom_panic(dom->xch, XC_OUT_OF_MEMORY, "%s: segment %s too large (0x%"PRIpfn" > " "0x%"PRIpfn" - 0x%"PRIpfn" pages)", - __FUNCTION__, name, pages, dom->total_pages, seg->pfn); + __FUNCTION__, name, pages, dom->total_pages, pfn); return -1; } |