On Wed, 20 Oct 2010 13:29:45 -0600, Eric Blake <eblake@xxxxxxxxxx> wrote: > * tools/virsh.c (cmdMemtune): Use long long for memory > sizes. Simplify allocation, and plug memory leak. > --- > > No need to cripple virsh with a 32-bit limit. > > Change from v1: > fix compilation failure, rebase on top of other recent memtune fixes > > tools/virsh.c | 19 ++++++++----------- > 1 files changed, 8 insertions(+), 11 deletions(-) > > diff --git a/tools/virsh.c b/tools/virsh.c > index ca9a61e..6a11a7a 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,22 @@ 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, NULL); > if (hard_limit) > nparams++; > > soft_limit = > - vshCommandOptInt(cmd, VIR_DOMAIN_MEMORY_SOFT_LIMIT, &soft_limit); > + vshCommandOptLongLong(cmd, VIR_DOMAIN_MEMORY_SOFT_LIMIT, NULL); > if (soft_limit) > nparams++; > > swap_hard_limit = > - vshCommandOptInt(cmd, VIR_DOMAIN_MEMORY_SWAP_HARD_LIMIT, > - &swap_hard_limit); > + vshCommandOptLongLong(cmd, VIR_DOMAIN_MEMORY_SWAP_HARD_LIMIT, NULL); > if (swap_hard_limit) > nparams++; > > min_guarantee = > - vshCommandOptInt(cmd, VIR_DOMAIN_MEMORY_MIN_GUARANTEE, > - &min_guarantee); > + vshCommandOptLongLong(cmd, VIR_DOMAIN_MEMORY_MIN_GUARANTEE, NULL); > if (min_guarantee) > nparams++; > > @@ -2954,8 +2952,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) != 0) { > vshError(ctl, "%s", _("Unable to get memory parameters")); > goto cleanup; > @@ -2995,9 +2992,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; > @@ -3037,6 +3033,7 @@ cmdMemtune(vshControl * ctl, const vshCmd * cmd) > } > > cleanup: > + VIR_FREE(params); > virDomainFree(dom); > return ret; > } ACK Nikunj -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list