aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/libxl_utils.c
diff options
context:
space:
mode:
authorMarek Marczykowski <marmarek@mimuw.edu.pl>2011-06-27 17:24:50 +0100
committerMarek Marczykowski <marmarek@mimuw.edu.pl>2011-06-27 17:24:50 +0100
commit21e104aab3d138706d3a9e674ff6ad296419bf61 (patch)
tree2f825b59fbb03c3fc6d8b7d76aaaeb929ea60853 /tools/libxl/libxl_utils.c
parent797290bf9d96b5c6a6a7b0d6a1aaf23d8d35acb1 (diff)
downloadxen-21e104aab3d138706d3a9e674ff6ad296419bf61.tar.gz
xen-21e104aab3d138706d3a9e674ff6ad296419bf61.tar.bz2
xen-21e104aab3d138706d3a9e674ff6ad296419bf61.zip
libxl: Allocate memory for strings in libxl_device_disk
Memory for strings in libxl_device_disk must be allocated from outside of libxl__gc to not be freed at the end of function (by libxl__free_all). Fixes xl block-detach Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl> Acked-by: Ian Campbell <ian.campbell@citrix.com> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools/libxl/libxl_utils.c')
-rw-r--r--tools/libxl/libxl_utils.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c
index 889d02cb7a..aad8e5a4a8 100644
--- a/tools/libxl/libxl_utils.c
+++ b/tools/libxl/libxl_utils.c
@@ -551,10 +551,12 @@ int libxl_devid_to_device_disk(libxl_ctx *ctx, uint32_t domid,
goto out;
disk->backend_domid = strtoul(val, NULL, 10);
be_path = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/backend", diskpath));
- disk->pdev_path = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/params", be_path));
+ disk->pdev_path = xs_read(ctx->xsh, XBT_NULL,
+ libxl__sprintf(&gc, "%s/params", be_path), NULL);
val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/type", be_path));
libxl_string_to_backend(ctx, val, &(disk->backend));
- disk->vdev = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/dev", be_path));
+ disk->vdev = xs_read(ctx->xsh, XBT_NULL,
+ libxl__sprintf(&gc, "%s/dev", be_path), NULL);
val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/removable", be_path));
disk->removable = !strcmp(val, "1");
val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/mode", be_path));