]> xenbits.xensource.com Git - people/julieng/xen-unstable.git/commitdiff
xl: avoid (another) uninitialised use of rc in vcpuset()
authorDario Faggioli <dario.faggioli@citrix.com>
Wed, 4 Nov 2015 12:03:31 +0000 (13:03 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 4 Nov 2015 15:05:14 +0000 (15:05 +0000)
Rearange the case when we check the new number of vCPUs
against the number of host pCPUs not to use rc for internal
error reporting. In fact:
 - rc was at risk of being used uninitialised;
 - rc should only be used for holding libxl error codes.

Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
tools/libxl/xl_cmdimpl.c

index 9b6b42ca2f1d40768ecffeac9dacc59b82ca0bba..78048a1c722b05fd96e438d094cf698a29e2991d 100644 (file)
@@ -5457,21 +5457,21 @@ static int vcpuset(uint32_t domid, const char* nr_vcpus, int check_host)
      * by the host's amount of pCPUs.
      */
     if (check_host) {
-        unsigned int host_cpu = libxl_get_max_cpus(ctx);
+        unsigned int online_vcpus, host_cpu = libxl_get_max_cpus(ctx);
         libxl_dominfo dominfo;
 
         if (libxl_domain_info(ctx, &dominfo, domid))
             return 1;
 
-        if (max_vcpus > dominfo.vcpu_online && max_vcpus > host_cpu) {
+        online_vcpus = dominfo.vcpu_online;
+        libxl_dominfo_dispose(&dominfo);
+
+        if (max_vcpus > online_vcpus && max_vcpus > host_cpu) {
             fprintf(stderr, "You are overcommmitting! You have %d physical" \
                     " CPUs and want %d vCPUs! Aborting, use --ignore-host to" \
                     " continue\n", host_cpu, max_vcpus);
-            rc = 1;
-        }
-        libxl_dominfo_dispose(&dominfo);
-        if (rc)
             return 1;
+        }
     }
     rc = libxl_cpu_bitmap_alloc(ctx, &cpumap, max_vcpus);
     if (rc) {