
On a Tuesday in 2021, Jim Fehlig wrote:
All of these strings are allocated once, freed once, and are never returned out of the function where they are declared.
Signed-off-by: Jim Fehlig <jfehlig@suse.com> --- src/libxl/libxl_capabilities.c | 3 +-- src/libxl/libxl_domain.c | 17 +++++------------ src/libxl/libxl_driver.c | 32 +++++++++++--------------------- src/libxl/libxl_logger.c | 21 ++++++--------------- src/libxl/libxl_migration.c | 15 +++++---------- src/libxl/xen_common.c | 17 ++++++----------- src/libxl/xen_xl.c | 6 ++---- 7 files changed, 36 insertions(+), 75 deletions(-)
@@ -1262,8 +1258,8 @@ libxlDomainStart(libxlDriverPrivatePtr driver, libxlSavefileHeader hdr; int ret = -1; uint32_t domid = 0; - char *dom_xml = NULL; - char *managed_save_path = NULL; + g_autofree char *dom_xml = NULL; + g_autofree char *managed_save_path = NULL; int managed_save_fd = -1; libxlDomainObjPrivatePtr priv = vm->privateData; g_autoptr(libxlDriverConfig) cfg = libxlDriverConfigGet(driver); @@ -1271,7 +1267,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver, libxl_asyncprogress_how aop_console_how; libxl_domain_restore_params params; unsigned int hostdev_flags = VIR_HOSTDEV_SP_PCI; - char *config_json = NULL; + g_autofree char *config_json = NULL;
#ifdef LIBXL_HAVE_PVUSB hostdev_flags |= VIR_HOSTDEV_SP_USB;
There is one more free that can be removed in the if (restore_fd < 0) block: vm->hasManagedSave = false; } VIR_FREE(managed_save_path); } if (virDomainObjSetDefTransient(driver->xmlopt, vm, NULL) < 0) goto cleanup;
@@ -1513,9 +1509,6 @@ libxlDomainStart(libxlDriverPrivatePtr driver,
cleanup: libxl_domain_config_dispose(&d_config); - VIR_FREE(config_json); - VIR_FREE(dom_xml); - VIR_FREE(managed_save_path); virDomainDefFree(def); VIR_FORCE_CLOSE(managed_save_fd); return ret;
[...]
@@ -4882,7 +4876,7 @@ libxlDomainGetNumaParameters(virDomainPtr dom, virDomainObjPtr vm; libxl_bitmap nodemap; virBitmapPtr nodes = NULL; - char *nodeset = NULL; + g_autofree char *nodeset = NULL;
This variable is used inside the loop, please move its declaration there (even though it's only used once).
int rc, ret = -1; size_t i, j;
@@ -4981,7 +4975,6 @@ libxlDomainGetNumaParameters(virDomainPtr dom, ret = 0;
cleanup: - VIR_FREE(nodeset); virBitmapFree(nodes); libxl_bitmap_dispose(&nodemap); virDomainObjEndAPI(&vm);
With the logger changes from your reply: Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano