* tools/virsh.c (cmdMemtune): Use long long for memory sizes. Simplify allocation, and plug memory leak. --- tools/virsh.c | 21 ++++++++++----------- 1 files changed, 10 insertions(+), 11 deletions(-) diff --git a/tools/virsh.c b/tools/virsh.c index cd4485f..4f41c6f 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -2905,7 +2905,7 @@ static int cmdMemtune(vshControl * ctl, const vshCmd * cmd) { virDomainPtr dom; - int hard_limit, soft_limit, swap_hard_limit, min_guarantee; + long long hard_limit, soft_limit, swap_hard_limit, min_guarantee; int nparams = 0; unsigned int i = 0; virMemoryParameterPtr params = NULL, temp = NULL; @@ -2918,24 +2918,24 @@ cmdMemtune(vshControl * ctl, const vshCmd * cmd) return FALSE; hard_limit = - vshCommandOptInt(cmd, VIR_DOMAIN_MEMORY_HARD_LIMIT, &hard_limit); + vshCommandOptLongLong(cmd, VIR_DOMAIN_MEMORY_HARD_LIMIT, &hard_limit); if (hard_limit) nparams++; soft_limit = - vshCommandOptInt(cmd, VIR_DOMAIN_MEMORY_SOFT_LIMIT, &soft_limit); + vshCommandOptLongLong(cmd, VIR_DOMAIN_MEMORY_SOFT_LIMIT, &soft_limit); if (soft_limit) nparams++; swap_hard_limit = - vshCommandOptInt(cmd, VIR_DOMAIN_SWAP_HARD_LIMIT, - &swap_hard_limit); + vshCommandOptLongLong(cmd, VIR_DOMAIN_SWAP_HARD_LIMIT, + &swap_hard_limit); if (swap_hard_limit) nparams++; min_guarantee = - vshCommandOptInt(cmd, VIR_DOMAIN_MEMORY_MIN_GUARANTEE, - &min_guarantee); + vshCommandOptLongLong(cmd, VIR_DOMAIN_MEMORY_MIN_GUARANTEE, + &min_guarantee); if (min_guarantee) nparams++; @@ -2949,8 +2949,7 @@ cmdMemtune(vshControl * ctl, const vshCmd * cmd) } /* now go get all the memory parameters */ - params = vshMalloc(ctl, sizeof(virMemoryParameter) * nparams); - memset(params, 0, sizeof(virMemoryParameter) * nparams); + params = vshCalloc(ctl, nparams, sizeof(*params)); if (virDomainGetMemoryParameters(dom, params, &nparams, 0)) { vshError(ctl, "%s", _("Unable to get memory parameters")); goto cleanup; @@ -2990,9 +2989,8 @@ cmdMemtune(vshControl * ctl, const vshCmd * cmd) ret = TRUE; } else { /* set the memory parameters */ - params = vshMalloc(ctl, sizeof(virMemoryParameter) * nparams); + params = vshCalloc(ctl, nparams, sizeof(*params)); - memset(params, 0, sizeof(virMemoryParameter) * nparams); for (i = 0; i < nparams; i++) { temp = ¶ms[i]; temp->type = VIR_DOMAIN_MEMORY_PARAM_ULLONG; @@ -3032,6 +3030,7 @@ cmdMemtune(vshControl * ctl, const vshCmd * cmd) } cleanup: + VIR_FREE(params); virDomainFree(dom); return ret; } -- 1.7.2.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list