libxl: do not GC data returned to the caller by libxl_device_disk_getinfo.
authorIan Campbell <ian.campbell@citrix.com>
Mon, 16 Aug 2010 14:31:05 +0000 (15:31 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Mon, 16 Aug 2010 14:31:05 +0000 (15:31 +0100)
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

tools/libxl/libxl.c

index 9638c1676d9fadea2a8a57b96a8338e4388384f5..d96743bab9e779dd0d8c53ade2dbe3986ccfeba2 100644 (file)
@@ -2501,8 +2501,8 @@ int libxl_device_disk_getinfo(libxl_ctx *ctx, uint32_t domid,
 
     /* tap devices entries in xenstore are written as vbd devices. */
     diskpath = libxl_sprintf(&gc, "%s/device/vbd/%d", dompath, diskinfo->devid);
-    diskinfo->backend = libxl_xs_read(&gc, XBT_NULL,
-                                      libxl_sprintf(&gc, "%s/backend", diskpath));
+    diskinfo->backend = xs_read(ctx->xsh, XBT_NULL,
+                                libxl_sprintf(&gc, "%s/backend", diskpath), NULL);
     if (!diskinfo->backend) {
         libxl_free_all(&gc);
         return ERROR_FAIL;
@@ -2515,8 +2515,8 @@ int libxl_device_disk_getinfo(libxl_ctx *ctx, uint32_t domid,
     diskinfo->evtch = val ? strtoul(val, NULL, 10) : -1;
     val = libxl_xs_read(&gc, XBT_NULL, libxl_sprintf(&gc, "%s/ring-ref", diskpath));
     diskinfo->rref = val ? strtoul(val, NULL, 10) : -1;
-    diskinfo->frontend = libxl_xs_read(&gc, XBT_NULL,
-                                       libxl_sprintf(&gc, "%s/frontend", diskinfo->backend));
+    diskinfo->frontend = xs_read(ctx->xsh, XBT_NULL,
+                                 libxl_sprintf(&gc, "%s/frontend", diskinfo->backend), NULL);
     val = libxl_xs_read(&gc, XBT_NULL, libxl_sprintf(&gc, "%s/frontend-id", diskinfo->backend));
     diskinfo->frontend_id = val ? strtoul(val, NULL, 10) : -1;