# HG changeset patch
# User Juergen Gross <juergen.gross@xxxxxxxxxxxxxx>
# Date 1291902656 -3600
# Node ID ab785e37499c8cdadd1fd5e4ab1bfbbacebf358b
# Parent f57026cd5d1945b5d7bff3bcfd44e3866913fe45
add missing libxl__free_all() calls
In various libxl functions libxl__free_all() was missing before return
Signed-off-by: juergen.gross@xxxxxxxxxxxxxx
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
committer: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
---
tools/libxl/libxl.c | 26 ++++++++++++++++++++++----
tools/libxl/libxl_dom.c | 13 ++++++++++---
tools/libxl/libxl_pci.c | 4 +++-
3 files changed, 35 insertions(+), 8 deletions(-)
diff -r f57026cd5d19 -r ab785e37499c tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Mon Dec 13 17:59:45 2010 +0000
+++ b/tools/libxl/libxl.c Thu Dec 09 14:50:56 2010 +0100
@@ -514,7 +514,10 @@ int libxl_domain_preserve(libxl_ctx *ctx
xs_write(ctx->xsh, t, libxl__sprintf(&gc, "%s/vm", dom_path), vm_path,
strlen(vm_path));
rc = libxl_domain_rename(ctx, domid, info->name, preserved_name, t);
- if (rc) return rc;
+ if (rc) {
+ libxl__free_all(&gc);
+ return rc;
+ }
xs_write(ctx->xsh, t, libxl__sprintf(&gc, "%s/uuid", vm_path),
uuid_string, strlen(uuid_string));
@@ -756,17 +759,20 @@ int libxl_domain_shutdown(libxl_ctx *ctx
ret = xc_get_hvm_param(ctx->xch, domid, HVM_PARAM_ACPI_S_STATE,
&acpi_s_state);
if (ret<0) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting ACPI S-state");
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
ret = xc_get_hvm_param(ctx->xch, domid, HVM_PARAM_CALLBACK_IRQ,
&pvdriver);
if (ret<0) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting HVM callback
IRQ");
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
if (!pvdriver || acpi_s_state != 0) {
ret = xc_domain_shutdown(ctx->xch, domid, req);
if (ret<0) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "unpausing domain");
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
}
@@ -3677,13 +3683,16 @@ int libxl_create_cpupool(libxl_ctx *ctx,
char *uuid_string;
uuid_string = libxl__uuid2string(&gc, *uuid);
- if (!uuid_string)
+ if (!uuid_string) {
+ libxl__free_all(&gc);
return ERROR_NOMEM;
+ }
rc = xc_cpupool_create(ctx->xch, poolid, schedid);
if (rc) {
LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, rc,
"Could not create cpupool");
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
@@ -3694,6 +3703,7 @@ int libxl_create_cpupool(libxl_ctx *ctx,
LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, rc,
"Error moving cpu to cpupool");
libxl_destroy_cpupool(ctx, *poolid);
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
}
@@ -3709,8 +3719,10 @@ int libxl_create_cpupool(libxl_ctx *ctx,
libxl__sprintf(&gc, "/local/pool/%d/name", *poolid),
"%s", name);
- if (xs_transaction_end(ctx->xsh, t, 0) || (errno != EAGAIN))
+ if (xs_transaction_end(ctx->xsh, t, 0) || (errno != EAGAIN)) {
+ libxl__free_all(&gc);
return 0;
+ }
}
}
@@ -3723,8 +3735,10 @@ int libxl_destroy_cpupool(libxl_ctx *ctx
libxl_cpumap cpumap;
info = xc_cpupool_getinfo(ctx->xch, poolid);
- if (info == NULL)
+ if (info == NULL) {
+ libxl__free_all(&gc);
return ERROR_NOMEM;
+ }
rc = ERROR_INVAL;
if ((info->cpupool_id != poolid) || (info->n_dom))
@@ -3768,6 +3782,7 @@ out1:
libxl_cpumap_destroy(&cpumap);
out:
xc_cpupool_infofree(ctx->xch, info);
+ libxl__free_all(&gc);
return rc;
}
@@ -3809,6 +3824,7 @@ int libxl_cpupool_movedomain(libxl_ctx *
dom_path = libxl__xs_get_dompath(&gc, domid);
if (!dom_path) {
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
@@ -3816,6 +3832,7 @@ int libxl_cpupool_movedomain(libxl_ctx *
if (rc) {
LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, rc,
"Error moving domain to cpupool");
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
@@ -3834,5 +3851,6 @@ int libxl_cpupool_movedomain(libxl_ctx *
break;
}
+ libxl__free_all(&gc);
return 0;
}
diff -r f57026cd5d19 -r ab785e37499c tools/libxl/libxl_dom.c
--- a/tools/libxl/libxl_dom.c Mon Dec 13 17:59:45 2010 +0000
+++ b/tools/libxl/libxl_dom.c Thu Dec 09 14:50:56 2010 +0100
@@ -121,8 +121,10 @@ int libxl__build_post(libxl_ctx *ctx, ui
}
dom_path = libxl__xs_get_dompath(&gc, domid);
- if (!dom_path)
+ if (!dom_path) {
+ libxl__free_all(&gc);
return ERROR_FAIL;
+ }
vm_path = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/vm",
dom_path), NULL);
retry_transaction:
@@ -469,6 +471,7 @@ int libxl__domain_save_device_model(libx
if (stat(filename, &st) < 0)
{
LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "Unable to stat qemu save file\n");
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
@@ -477,13 +480,17 @@ int libxl__domain_save_device_model(libx
c = libxl_write_exactly(ctx, fd, QEMU_SIGNATURE, strlen(QEMU_SIGNATURE),
"saved-state file", "qemu signature");
- if (c)
+ if (c) {
+ libxl__free_all(&gc);
return c;
+ }
c = libxl_write_exactly(ctx, fd, &qemu_state_len, sizeof(qemu_state_len),
"saved-state file", "saved-state length");
- if (c)
+ if (c) {
+ libxl__free_all(&gc);
return c;
+ }
fd2 = open(filename, O_RDONLY);
while ((c = read(fd2, buf, sizeof(buf))) != 0) {
diff -r f57026cd5d19 -r ab785e37499c tools/libxl/libxl_pci.c
--- a/tools/libxl/libxl_pci.c Mon Dec 13 17:59:45 2010 +0000
+++ b/tools/libxl/libxl_pci.c Thu Dec 09 14:50:56 2010 +0100
@@ -525,8 +525,10 @@ int libxl_device_pci_list_assignable(lib
*list = NULL;
rc = get_all_assigned_devices(&gc, &assigned, &num_assigned);
- if ( rc )
+ if ( rc ) {
+ libxl__free_all(&gc);
return rc;
+ }
dir = opendir(SYSFS_PCIBACK_DRIVER);
if ( NULL == dir ) {
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|