[Libvir] [PATCH] Fix the check of <cpumap> in virsh vcpupin

Masayuki Sunou fj1826dm at aa.jp.fujitsu.com
Tue Jun 19 08:37:46 UTC 2007


Hi Rich

Thank you for a reviewing and improvement.
It looks good to me.

> I want to commit this one if we're all happy with it ...?
> 
If this patch is applied, our team member become happy.

Thanks
Masayuki Sunou

In message <4676B0BD.4030307 at redhat.com>
   "Re: [Libvir] [PATCH] Fix the check of <cpumap> in virsh vcpupin"
   ""Richard W.M. Jones" <rjones at redhat.com>" wrote:

> Richard W.M. Jones wrote:
> > Index: src/virsh.c
> > ===================================================================
> > RCS file: /data/cvs/libvirt/src/virsh.c,v
> > retrieving revision 1.85
> > diff -u -r1.85 virsh.c
> > --- src/virsh.c	18 Jun 2007 08:33:08 -0000	1.85
> > +++ src/virsh.c	18 Jun 2007 11:00:59 -0000
> > @@ -1505,7 +1505,7 @@
> >   * "vcpupin" command
> >   */
> >  static vshCmdInfo info_vcpupin[] = {
> > -    {"syntax", "vcpupin <domain>"},
> > +    {"syntax", "vcpupin <domain> <vcpu> <cpulist>"},
> >      {"help", gettext_noop("control domain vcpu affinity")},
> >      {"desc", gettext_noop("Pin domain VCPUs to host physical CPUs.")},
> >      {NULL, NULL}
> > @@ -1530,6 +1530,8 @@
> >      int vcpufound = 0;
> >      unsigned char *cpumap;
> >      int cpumaplen;
> > +    int i;
> > +    enum { expect_num, expect_num_or_comma } state;
> >  
> >      if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
> >          return FALSE;
> > @@ -1563,6 +1565,42 @@
> >          return FALSE;
> >      }
> >  
> > +    /* Check that the cpulist parameter is a comma-separated list of
> > +     * numbers and give an intelligent error message if not.
> > +     */
> > +    if (cpulist[0] == '\0') {
> > +        vshError(ctl, FALSE, _("cpulist: Invalid format. Empty string."));
> > +        virDomainFree (dom);
> > +        return FALSE;
> > +    }
> > +
> > +    state = expect_num;
> > +    for (i = 0; cpulist[i]; i++) {
> > +        switch (state) {
> > +        case expect_num:
> > +            if (!isdigit (cpulist[i])) {
> > +                vshError( ctl, FALSE, _("cpulist: %s: Invalid format. Expecting digit at position %d (near '%c')."), cpulist, i, cpulist[i]);
> > +                virDomainFree (dom);
> > +                return FALSE;
> > +            }
> > +            state = expect_num_or_comma;
> > +            break;
> > +        case expect_num_or_comma:
> > +            if (cpulist[i] == ',')
> > +                state = expect_num;
> > +            else if (!isdigit (cpulist[i])) {
> > +                vshError(ctl, FALSE, _("cpulist: %s: Invalid format. Expecting digit or comma at position %d (near '%c')."), cpulist, i, cpulist[i]);
> > +                virDomainFree (dom);
> > +                return FALSE;
> > +            }
> > +        }
> > +    }
> > +    if (state == expect_num) {
> > +        vshError(ctl, FALSE, _("cpulist: %s: Invalid format. Trailing comma at position %d."), cpulist, i);
> > +        virDomainFree (dom);
> > +        return FALSE;
> > +    }
> > +
> >      cpumaplen = VIR_CPU_MAPLEN(VIR_NODEINFO_MAXCPUS(nodeinfo));
> >      cpumap = vshCalloc(ctl, 1, cpumaplen);
> 
> I want to commit this one if we're all happy with it ...?
> 
> Rich.
> 
> -- 
> Emerging Technologies, Red Hat - http://et.redhat.com/~rjones/
> Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
> Street, Windsor, Berkshire, SL4 1TE, United Kingdom.  Registered in
> England and Wales under Company Registration No. 03798903
> 




More information about the libvir-list mailing list