From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Marczykowski Subject: [PATCH 3 of 6 RESENT] libxl: Allocate memory for strings in libxl_device_disk Date: Sun, 05 Jun 2011 18:50:33 +0200 Message-ID: <9fe949c7ab9601bb5500.1307292633@devel14> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com Cc: marmarek@mimuw.edu.pl List-Id: xen-devel@lists.xenproject.org # HG changeset patch # User Marek Marczykowski # Date 1306962954 -7200 # Node ID 9fe949c7ab9601bb5500a53c538f7a23b61e1bcb # Parent 5231fa19f3e39091ff29e2a6dca057ca54403092 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 diff -r 5231fa19f3e3 -r 9fe949c7ab96 tools/libxl/libxl_utils.c --- a/tools/libxl/libxl_utils.c Wed Jun 01 23:15:29 2011 +0200 +++ b/tools/libxl/libxl_utils.c Wed Jun 01 23:15:54 2011 +0200 @@ -551,10 +551,10 @@ int libxl_devid_to_device_disk(libxl_ctx 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->unpluggable = !strcmp(val, "1"); val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/mode", be_path));