aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl
diff options
context:
space:
mode:
authorDario Faggioli <raistlin@linux.it>2012-05-29 11:36:36 +0100
committerDario Faggioli <raistlin@linux.it>2012-05-29 11:36:36 +0100
commit65e5514ba8c545cfb75010a3cf33fa22ae0799e7 (patch)
tree3a4b42a3baf96d1aeea0d5c17d2e5a6f408dee27 /tools/libxl
parentd72f334a2806c99812549cfc04b9e2cdb630ce07 (diff)
downloadxen-65e5514ba8c545cfb75010a3cf33fa22ae0799e7.tar.gz
xen-65e5514ba8c545cfb75010a3cf33fa22ae0799e7.tar.bz2
xen-65e5514ba8c545cfb75010a3cf33fa22ae0799e7.zip
libxl: introduce libxl_vcpuinfo_list_free
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>
Diffstat (limited to 'tools/libxl')
-rw-r--r--tools/libxl/libxl.h1
-rw-r--r--tools/libxl/libxl_utils.c8
-rw-r--r--tools/libxl/xl_cmdimpl.c12
3 files changed, 16 insertions, 5 deletions
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
index 48c87d3eff..9c03f15c31 100644
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -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,
diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c
index 73b00b3f84..56c4797af2 100644
--- a/tools/libxl/libxl_utils.c
+++ b/tools/libxl/libxl_utils.c
@@ -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) {
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index eb1a9a0bf3..ca988d6979 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -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);