Skip to contentSkip to conversation

xl: avoid (another) uninitialised use of rc in vcpuset()

PATCH In review Dario Faggioli 2 participants 2 messages Nov 4, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 xl: avoid (another) uninitialised use of rc in vcpuset()

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.

---
Cc: Ian Campbell <[email protected]>
Cc: Ian Jackson <[email protected]>
Cc: Wei Liu <[email protected]>
Cc: Harmandeep Kaur <[email protected]>
Cc: Andrew Cooper <[email protected]>

---
 tools/libxl/xl_cmdimpl.c |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
tools/libxl/xl_cmdimpl.c +6 -6
index 9b6b42c..78048a1 100644
@@ -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) {
#1 lore raw
Quoted 7 lines · Dario Faggioli

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.

acked + applied.

Quoted 37 lines

---
Cc: Ian Campbell <[email protected]>
Cc: Ian Jackson <[email protected]>
Cc: Wei Liu <[email protected]>
Cc: Harmandeep Kaur <[email protected]>
Cc: Andrew Cooper <[email protected]>
---
 tools/libxl/xl_cmdimpl.c |   12 ++++++------

 1 file changed, 6 insertions(+), 6 deletions(-)
tools/libxl/xl_cmdimpl.c +1 -1
index 9b6b42c..78048a1 100644
@@ -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;

Quoted 9 lines

-        }
-        libxl_dominfo_dispose(&dominfo);
-        if (rc)
             return 1;
+        }
     }
     rc = libxl_cpu_bitmap_alloc(ctx, &cpumap, max_vcpus); if (rc) {

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xen.org/xen-devel