From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: [PATCH v2] xl: convert vcpuid to signed in main_vcpupin() Date: Thu, 04 Sep 2014 13:44:24 +0200 Message-ID: <20140904114423.9021.85034.stgit@Solace.lan> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1XPVSn-0005A4-Eb for xen-devel@lists.xenproject.org; Thu, 04 Sep 2014 11:44:29 +0000 Received: by mail-we0-f178.google.com with SMTP id u57so10147990wes.9 for ; Thu, 04 Sep 2014 04:44:27 -0700 (PDT) List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel Cc: Ian Campbell , Andrew Cooper , Ian Jackson List-Id: xen-devel@lists.xenproject.org As it needs to be, considering that we assign -1 to it (and that, later, we check for it to be -1), to signify 'all vcpus'. While at it, fix a coding style nit and improve error reporting. Signed-off-by: Dario Faggioli --- Changes from v1: * improve the changelog * add a comment about why long instead of int --- tools/libxl/xl_cmdimpl.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index e6b9615..8a38077 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -4638,7 +4638,12 @@ int main_vcpupin(int argc, char **argv) libxl_vcpuinfo *vcpuinfo; libxl_bitmap cpumap_hard, cpumap_soft;; libxl_bitmap *soft = &cpumap_soft, *hard = &cpumap_hard; - uint32_t vcpuid, domid; + uint32_t domid; + /* + * int would be enough for vcpuid, but we don't want to + * mess aroung range checking the return value of strtol(). + */ + long vcpuid; const char *vcpu, *hard_str, *soft_str; char *endptr; int opt, nb_cpu, nb_vcpu, rc = -1; @@ -4656,10 +4661,10 @@ int main_vcpupin(int argc, char **argv) soft_str = (argc > optind+3) ? argv[optind+3] : NULL; /* Figure out with which vCPU we are dealing with */ - vcpuid = strtoul(vcpu, &endptr, 10); - if (vcpu == endptr) { + vcpuid = strtol(vcpu, &endptr, 10); + if (vcpu == endptr || vcpuid < 0) { if (strcmp(vcpu, "all")) { - fprintf(stderr, "Error: Invalid argument.\n"); + fprintf(stderr, "Error: Invalid argument %s as VCPU.\n", vcpu); goto out; } vcpuid = -1; @@ -4725,12 +4730,11 @@ int main_vcpupin(int argc, char **argv) if (vcpuid != -1) { if (libxl_set_vcpuaffinity(ctx, domid, vcpuid, hard, soft)) { - fprintf(stderr, "Could not set affinity for vcpu `%u'.\n", + fprintf(stderr, "Could not set affinity for vcpu `%ld'.\n", vcpuid); goto out; } - } - else { + } else { if (!(vcpuinfo = libxl_list_vcpu(ctx, domid, &nb_vcpu, &nb_cpu))) { fprintf(stderr, "libxl_list_vcpu failed.\n"); goto out;