From: Roger Pau Monne Date: Thu, 4 Feb 2016 15:25:50 +0000 (+0000) Subject: libxc: fix uninitialised usage of rc in meminit_hvm X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=1ac81bb7166b79b6555290547d4effff305c74d0;p=people%2Fliuw%2Flibxenctrl-split%2Fxen.git libxc: fix uninitialised usage of rc in meminit_hvm Due to the HVMlite changes there's a chance that the value in rc is checked without being initialised. Fix this by initialising it to 0 prior to the while loop. Also add a specific error check to a previous populate_physmap call, this prevents us from overwriting this error. Signed-off-by: Roger Pau Monné Reported-by: Olaf Hering Acked-by: Ian Campbell --- diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c index ef474a8089..2a3f64b89b 100644 --- a/tools/libxc/xc_dom_x86.c +++ b/tools/libxc/xc_dom_x86.c @@ -1412,8 +1412,15 @@ static int meminit_hvm(struct xc_dom_image *dom) * ensure that we can be preempted and hence dom0 remains responsive. */ if ( dom->device_model ) + { rc = xc_domain_populate_physmap_exact( xch, domid, 0xa0, 0, memflags, &dom->p2m_host[0x00]); + if ( rc != 0 ) + { + DOMPRINTF("Could not populate low memory (< 0xA0).\n"); + goto error_out; + } + } stat_normal_pages = 0; for ( vmemid = 0; vmemid < nr_vmemranges; vmemid++ ) @@ -1440,6 +1447,7 @@ static int meminit_hvm(struct xc_dom_image *dom) else cur_pages = vmemranges[vmemid].start >> PAGE_SHIFT; + rc = 0; while ( (rc == 0) && (end_pages > cur_pages) ) { /* Clip count to maximum 1GB extent. */