libxc: Check xc_maximum_ram_page for negative return values.

Instead of assuming everything is always OK. As such
we return now the return value (or zero for success).
The max_mfn is now passed in as the parameter.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
This commit is contained in:
Konrad Rzeszutek Wilk authored and Ian Campbell committed 2015-03-20 16:07:35 +00:00
1 parent a8f8a590e0
commit 1781f00ea6
5 files changed
+19 -12

No files matched your search

+1 -1
View File
@@ -1509,7 +1509,7 @@ int xc_mmuext_op(xc_interface *xch, struct mmuext_op *op, unsigned int nr_ops,
domid_t dom);
/* System wide memory properties */
long xc_maximum_ram_page(xc_interface *xch);
int xc_maximum_ram_page(xc_interface *xch, unsigned long *max_mfn);
/* Get current total pages allocated to a domain. */
long xc_get_tot_pages(xc_interface *xch, uint32_t domid);
+3 -3
View File
@@ -412,7 +412,7 @@ int xc_exchange_page(xc_interface *xch, int domid, xen_pfn_t mfn)
uint32_t status;
xen_pfn_t new_mfn, gpfn;
xen_pfn_t *m2p_table;
int max_mfn;
unsigned long max_mfn;
if ( xc_domain_getinfo(xch, domid, 1, &info) != 1 )
{
@@ -433,8 +433,8 @@ int xc_exchange_page(xc_interface *xch, int domid, xen_pfn_t mfn)
}
/* Map M2P and obtain gpfn */
max_mfn = xc_maximum_ram_page(xch);
if ( !(m2p_table = xc_map_m2p(xch, max_mfn, PROT_READ, NULL)) )
rc = xc_maximum_ram_page(xch, &max_mfn);
if ( rc || !(m2p_table = xc_map_m2p(xch, max_mfn, PROT_READ, NULL)) )
{
PERROR("Failed to map live M2P table");
return -1;
+9 -2
View File
@@ -535,9 +535,16 @@ int do_memory_op(xc_interface *xch, int cmd, void *arg, size_t len)
return ret;
}
long xc_maximum_ram_page(xc_interface *xch)
int xc_maximum_ram_page(xc_interface *xch, unsigned long *max_mfn)
{
return do_memory_op(xch, XENMEM_maximum_ram_page, NULL, 0);
long rc = do_memory_op(xch, XENMEM_maximum_ram_page, NULL, 0);
if ( rc >= 0 )
{
*max_mfn = rc;
rc = 0;
}
return rc;
}
long long xc_domain_get_cpu_usage( xc_interface *xch, domid_t domid, int vcpu )
+2 -1
View File
@@ -311,7 +311,8 @@ static inline int get_platform_info(xc_interface *xch, uint32_t dom,
if (xc_version(xch, XENVER_capabilities, &xen_caps) != 0)
return 0;
*max_mfn = xc_maximum_ram_page(xch);
if (xc_maximum_ram_page(xch, max_mfn))
return 0;
*hvirt_start = xen_params.virt_start;
+4 -5
View File
@@ -31,7 +31,7 @@ int help_func(int argc, char *argv[])
int dump_m2p_func(int argc, char *argv[])
{
unsigned long i;
long max_mfn;
unsigned long max_mfn;
xen_pfn_t *m2p_table;
if ( argc > 0 )
@@ -41,8 +41,7 @@ int dump_m2p_func(int argc, char *argv[])
}
/* Map M2P and obtain gpfn */
max_mfn = xc_maximum_ram_page(xch);
if ( max_mfn < 0 )
if ( xc_maximum_ram_page(xch, &max_mfn) < 0 );
{
ERROR("Failed to get the maximum mfn");
return -1;
@@ -183,8 +182,8 @@ int dump_ptes_func(int argc, char *argv[])
}
/* Map M2P and obtain gpfn */
max_mfn = xc_maximum_ram_page(xch);
if ( (mfn > max_mfn) ||
rc = xc_maximum_ram_page(xch, &max_mfn);
if ( rc || (mfn > max_mfn) ||
!(m2p_table = xc_map_m2p(xch, max_mfn, PROT_READ, NULL)) )
{
xc_unmap_domain_meminfo(xch, &minfo);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.