]> xenbits.xensource.com Git - people/vhanquez/xen-unstable.git/commitdiff
libxl: introduce libxl_vcpuinfo_list_free
authorDario Faggioli <raistlin@linux.it>
Tue, 29 May 2012 10:36:36 +0000 (11:36 +0100)
committerDario Faggioli <raistlin@linux.it>
Tue, 29 May 2012 10:36:36 +0000 (11:36 +0100)
And fix a leak due to it being missing.

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

index 48c87d3effe581f58c4aa713a283fed7839bf686..9c03f15c3174c2d0505c636dba6cc442872bf764 100644 (file)
@@ -765,6 +765,7 @@ libxl_cputopology *libxl_get_cpu_topology(libxl_ctx *ctx, int *nr);
 void libxl_cputopology_list_free(libxl_cputopology *, int nr);
 libxl_vcpuinfo *libxl_list_vcpu(libxl_ctx *ctx, uint32_t domid,
                                        int *nb_vcpu, int *nrcpus);
+void libxl_vcpuinfo_list_free(libxl_vcpuinfo *, int nr);
 int libxl_set_vcpuaffinity(libxl_ctx *ctx, uint32_t domid, uint32_t vcpuid,
                            libxl_cpumap *cpumap);
 int libxl_set_vcpuaffinity_all(libxl_ctx *ctx, uint32_t domid,
index 73b00b3f844879a236868683b9e3e8e45ef7c53a..56c4797af237a4518ce8ecdc6386010d44b85c24 100644 (file)
@@ -558,6 +558,14 @@ void libxl_cputopology_list_free(libxl_cputopology *list, int nr)
     free(list);
 }
 
+void libxl_vcpuinfo_list_free(libxl_vcpuinfo *list, int nr)
+{
+    int i;
+    for (i = 0; i < nr; i++)
+        libxl_vcpuinfo_dispose(&list[i]);
+    free(list);
+}
+
 int libxl__sendmsg_fds(libxl__gc *gc, int carrier,
                        const void *data, size_t datalen,
                        int nfds, const int fds[], const char *what) {
index eb1a9a0bf3313175ed92cec70fc4a66eeb8bc2dd..ca988d697919e1370fe533c171c6310304ca383d 100644 (file)
@@ -3979,10 +3979,9 @@ static void print_domain_vcpuinfo(uint32_t domid, uint32_t nr_cpus)
 
     for (i = 0; i < nb_vcpu; i++) {
         print_vcpuinfo(domid, &vcpuinfo[i], nr_cpus);
-        libxl_vcpuinfo_dispose(&vcpuinfo[i]);
     }
 
-    free(vcpuinfo);
+    libxl_vcpuinfo_list_free(vcpuinfo, nb_vcpu);
 }
 
 static void vcpulist(int argc, char **argv)
@@ -4070,11 +4069,14 @@ static void vcpupin(const char *d, const char *vcpu, char *cpu)
             fprintf(stderr, "libxl_list_vcpu failed.\n");
             goto vcpupin_out1;
         }
-        for (; nb_vcpu > 0; --nb_vcpu, ++vcpuinfo) {
-            if (libxl_set_vcpuaffinity(ctx, domid, vcpuinfo->vcpuid, &cpumap) == -1) {
-                fprintf(stderr, "libxl_set_vcpuaffinity failed on vcpu `%u'.\n", vcpuinfo->vcpuid);
+        for (i = 0; i < nb_vcpu; i++) {
+            if (libxl_set_vcpuaffinity(ctx, domid, vcpuinfo[i].vcpuid,
+                                       &cpumap) == -1) {
+                fprintf(stderr, "libxl_set_vcpuaffinity failed"
+                                " on vcpu `%u'.\n", vcpuinfo[i].vcpuid);
             }
         }
+        libxl_vcpuinfo_list_free(vcpuinfo, nb_vcpu);
     }
   vcpupin_out1:
     libxl_cpumap_dispose(&cpumap);