[libvirt PATCH 1/2] libxl: prefer g_new0 to VIR_ALLOC

Ján Tomko jtomko at redhat.com
Tue Sep 29 18:01:25 UTC 2020


Signed-off-by: Ján Tomko <jtomko at redhat.com>
---
 src/libxl/libxl_capabilities.c |  13 ++--
 src/libxl/libxl_conf.c         |  48 ++++---------
 src/libxl/libxl_domain.c       |  19 ++---
 src/libxl/libxl_driver.c       |  20 +++---
 src/libxl/libxl_migration.c    |  21 ++----
 src/libxl/xen_common.c         | 122 +++++++++------------------------
 src/libxl/xen_xl.c             |  85 +++++++----------------
 src/libxl/xen_xm.c             |   9 +--
 8 files changed, 104 insertions(+), 233 deletions(-)

diff --git a/src/libxl/libxl_capabilities.c b/src/libxl/libxl_capabilities.c
index e5b144ea1d..e3472acb4b 100644
--- a/src/libxl/libxl_capabilities.c
+++ b/src/libxl/libxl_capabilities.c
@@ -269,11 +269,9 @@ libxlCapsInitNuma(libxl_ctx *ctx, virCapsPtr caps)
         }
     }
 
-    if (VIR_ALLOC_N(cpus, nr_nodes) < 0)
-        goto cleanup;
+    cpus = g_new0(virCapsHostNUMACellCPUPtr, nr_nodes);
 
-    if (VIR_ALLOC_N(nr_cpus_node, nr_nodes) < 0)
-        goto cleanup;
+    nr_cpus_node = g_new0(int, nr_nodes);
 
     /* For each node, prepare a list of CPUs belonging to that node */
     for (i = 0; i < nr_cpus; i++) {
@@ -285,7 +283,7 @@ libxlCapsInitNuma(libxl_ctx *ctx, virCapsPtr caps)
         nr_cpus_node[node]++;
 
         if (nr_cpus_node[node] == 1) {
-            if (VIR_ALLOC(cpus[node]) < 0)
+            cpus[node] = g_new0(virCapsHostNUMACellCPU, 1);
                 goto cleanup;
         } else {
             if (VIR_REALLOC_N(cpus[node], nr_cpus_node[node]) < 0)
@@ -328,7 +326,7 @@ libxlCapsInitNuma(libxl_ctx *ctx, virCapsPtr caps)
         if (nr_siblings) {
             size_t j;
 
-            if (VIR_ALLOC_N(siblings, nr_siblings) < 0)
+            siblings = g_new0(virCapsHostNUMACellSiblingInfo, nr_siblings);
                 goto cleanup;
 
             for (j = 0; j < nr_siblings; j++) {
@@ -590,8 +588,7 @@ libxlMakeDomainOSCaps(const char *machine,
         return 0;
 
     capsLoader->supported = VIR_TRISTATE_BOOL_YES;
-    if (VIR_ALLOC_N(capsLoader->values.values, nfirmwares) < 0)
-        return -1;
+    capsLoader->values.values = g_new0(char *, nfirmwares);
 
     for (i = 0; i < nfirmwares; i++) {
         capsLoader->values.values[capsLoader->values.nvalues] = g_strdup(firmwares[i]->name);
diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 5b729a019a..03ec37d6c5 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -613,9 +613,7 @@ libxlMakeDomBuildInfo(virDomainDefPtr def,
                     return -1;
             } else {
 #ifdef LIBXL_HAVE_BUILDINFO_SERIAL_LIST
-                if (VIR_ALLOC_N(b_info->u.hvm.serial_list, def->nserials + 1) <
-                    0)
-                    return -1;
+                b_info->u.hvm.serial_list = *g_new0(libxl_string_list, def->nserials + 1);
                 for (i = 0; i < def->nserials; i++) {
                     if (libxlMakeChrdevStr(def->serials[i],
                                            &b_info->u.hvm.serial_list[i]) < 0)
@@ -826,8 +824,7 @@ libxlMakeVnumaList(virDomainDefPtr def,
     /*
      * allocate the vnuma_nodes for assignment under b_info.
      */
-    if (VIR_ALLOC_N(vnuma_nodes, num_vnuma) < 0)
-        return -1;
+    vnuma_nodes = g_new0(libxl_vnode_info, num_vnuma);
 
     /*
      * parse the vnuma vnodes data.
@@ -870,8 +867,7 @@ libxlMakeVnumaList(virDomainDefPtr def,
         libxl_bitmap_dispose(&vcpu_bitmap);
 
         /* vdistances */
-        if (VIR_ALLOC_N(p->distances, num_vnuma) < 0)
-            goto cleanup;
+        p->distances = g_new0(uint32_t, num_vnuma);
         p->num_distances = num_vnuma;
 
         for (j = 0; j < num_vnuma; j++)
@@ -1193,8 +1189,7 @@ libxlMakeDiskList(virDomainDefPtr def, libxl_domain_config *d_config)
     libxl_device_disk *x_disks;
     size_t i;
 
-    if (VIR_ALLOC_N(x_disks, ndisks) < 0)
-        return -1;
+    x_disks = g_new0(libxl_device_disk, ndisks);
 
     for (i = 0; i < ndisks; i++) {
         if (libxlMakeDisk(l_disks[i], &x_disks[i]) < 0)
@@ -1464,8 +1459,7 @@ libxlMakeNicList(virDomainDefPtr def,  libxl_domain_config *d_config)
     libxl_device_nic *x_nics;
     size_t i, nvnics = 0;
 
-    if (VIR_ALLOC_N(x_nics, nnics) < 0)
-        return -1;
+    x_nics = g_new0(libxl_device_nic, nnics);
 
     for (i = 0; i < nnics; i++) {
         if (virDomainNetGetActualType(l_nics[i]) == VIR_DOMAIN_NET_TYPE_HOSTDEV)
@@ -1567,12 +1561,8 @@ libxlMakeVfbList(virPortAllocatorRangePtr graphicsports,
     if (nvfbs == 0)
         return 0;
 
-    if (VIR_ALLOC_N(x_vfbs, nvfbs) < 0)
-        return -1;
-    if (VIR_ALLOC_N(x_vkbs, nvfbs) < 0) {
-        VIR_FREE(x_vfbs);
-        return -1;
-    }
+    x_vfbs = g_new0(libxl_device_vfb, nvfbs);
+    x_vkbs = g_new0(libxl_device_vkb, nvfbs);
 
     for (i = 0; i < nvfbs; i++) {
         libxl_device_vkb_init(&x_vkbs[i]);
@@ -1764,11 +1754,9 @@ libxlDriverConfigNew(void)
         goto error;
 
 #else
-    if (VIR_ALLOC_N(cfg->firmwares, 1) < 0)
-        goto error;
+    cfg->firmwares = g_new0(virFirmwarePtr, 1);
     cfg->nfirmwares = 1;
-    if (VIR_ALLOC(cfg->firmwares[0]) < 0)
-        goto error;
+    cfg->firmwares[0] = g_new0(virFirmware, 1);
     cfg->firmwares[0]->name = g_strdup(LIBXL_FIRMWARE_DIR "/ovmf.bin");
 #endif
 
@@ -1776,8 +1764,7 @@ libxlDriverConfigNew(void)
     if (VIR_REALLOC_N(cfg->firmwares, cfg->nfirmwares + 1) < 0)
         goto error;
     cfg->nfirmwares++;
-    if (VIR_ALLOC(cfg->firmwares[cfg->nfirmwares - 1]) < 0)
-        goto error;
+    cfg->firmwares[cfg->nfirmwares - 1] = g_new0(virFirmware, 1);
     cfg->firmwares[cfg->nfirmwares - 1]->name = g_strdup(LIBXL_FIRMWARE_DIR "/hvmloader");
 
     /* defaults for keepalive messages */
@@ -2033,8 +2020,7 @@ libxlMakeChannelList(const char *channelDir,
     libxl_device_channel *x_channels;
     size_t i, nvchannels = 0;
 
-    if (VIR_ALLOC_N(x_channels, nchannels) < 0)
-        return -1;
+    x_channels = g_new0(libxl_device_channel, nchannels);
 
     for (i = 0; i < nchannels; i++) {
         if (l_channels[i]->deviceType != VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL)
@@ -2125,8 +2111,7 @@ libxlMakeDefaultUSBControllers(virDomainDefPtr def,
 
     /* Create USB controllers with 8 ports */
     ncontrollers = VIR_DIV_UP(nusbdevs, 8);
-    if (VIR_ALLOC_N(x_controllers, ncontrollers) < 0)
-        return -1;
+    x_controllers = g_new0(libxl_device_usbctrl, ncontrollers);
 
     for (i = 0; i < ncontrollers; i++) {
         if (!(l_controller = virDomainControllerDefNew(VIR_DOMAIN_CONTROLLER_TYPE_USB)))
@@ -2176,8 +2161,7 @@ libxlMakeUSBControllerList(virDomainDefPtr def, libxl_domain_config *d_config)
     if (nusbctrls == 0)
         return libxlMakeDefaultUSBControllers(def, d_config);
 
-    if (VIR_ALLOC_N(x_usbctrls, nusbctrls) < 0)
-        return -1;
+    x_usbctrls = g_new0(libxl_device_usbctrl, nusbctrls);
 
     for (i = 0, j = 0; i < ncontrollers && j < nusbctrls; i++) {
         if (l_controllers[i]->type != VIR_DOMAIN_CONTROLLER_TYPE_USB)
@@ -2253,8 +2237,7 @@ libxlMakeUSBList(virDomainDefPtr def, libxl_domain_config *d_config)
     if (nhostdevs == 0)
         return 0;
 
-    if (VIR_ALLOC_N(x_usbdevs, nhostdevs) < 0)
-        return -1;
+    x_usbdevs = g_new0(libxl_device_usbdev, nhostdevs);
 
     for (i = 0, j = 0; i < nhostdevs; i++) {
         if (l_hostdevs[i]->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS)
@@ -2316,8 +2299,7 @@ libxlMakePCIList(virDomainDefPtr def, libxl_domain_config *d_config)
     if (nhostdevs == 0)
         return 0;
 
-    if (VIR_ALLOC_N(x_pcidevs, nhostdevs) < 0)
-        return -1;
+    x_pcidevs = g_new0(libxl_device_pci, nhostdevs);
 
     for (i = 0, j = 0; i < nhostdevs; i++) {
         if (l_hostdevs[i]->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS)
diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c
index de2059fa24..a3f362a0c8 100644
--- a/src/libxl/libxl_domain.c
+++ b/src/libxl/libxl_domain.c
@@ -72,8 +72,7 @@ libxlDomainObjInitJob(libxlDomainObjPrivatePtr priv)
     if (virCondInit(&priv->job.cond) < 0)
         return -1;
 
-    if (VIR_ALLOC(priv->job.current) < 0)
-        return -1;
+    priv->job.current = g_new0(virDomainJobInfo, 1);
 
     return 0;
 }
@@ -402,11 +401,7 @@ libxlDomainDefPostParse(virDomainDefPtr def,
         chrdef->target.port = 0;
         chrdef->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_XEN;
 
-        if (VIR_ALLOC_N(def->consoles, 1) < 0) {
-            virDomainChrDefFree(chrdef);
-            return -1;
-        }
-
+        def->consoles = g_new0(virDomainChrDefPtr, 1);
         def->nconsoles = 1;
         def->consoles[0] = chrdef;
     }
@@ -429,8 +424,8 @@ libxlDomainDefPostParse(virDomainDefPtr def,
     /* add implicit balloon device */
     if (def->memballoon == NULL) {
         virDomainMemballoonDefPtr memballoon;
-        if (VIR_ALLOC(memballoon) < 0)
-            return -1;
+        memballoon = g_new0(virDomainMemballoonDef,
+                            1);
 
         memballoon->model = VIR_DOMAIN_MEMBALLOON_MODEL_XEN;
         def->memballoon = memballoon;
@@ -695,8 +690,7 @@ libxlDomainEventHandler(void *data, VIR_LIBXL_EVENT_CONST libxl_event *event)
      * Start a thread to handle shutdown.  We don't want to be tying up
      * libxl's event machinery by doing a potentially lengthy shutdown.
      */
-    if (VIR_ALLOC(shutdown_info) < 0)
-        goto error;
+    shutdown_info = g_new0(struct libxlShutdownThreadInfo, 1);
 
     shutdown_info->driver = driver;
     shutdown_info->event = (libxl_event *)event;
@@ -785,8 +779,7 @@ libxlDomainSaveImageOpen(libxlDriverPrivatePtr driver,
         goto error;
     }
 
-    if (VIR_ALLOC_N(xml, hdr.xmlLen) < 0)
-        goto error;
+    xml = g_new0(char, hdr.xmlLen);
 
     if (saferead(fd, xml, hdr.xmlLen) != hdr.xmlLen) {
         virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("failed to read XML"));
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 571b70f982..eece0f8118 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -159,8 +159,7 @@ libxlFDRegisterEventHook(void *priv,
     int vir_events = VIR_EVENT_HANDLE_ERROR;
     libxlOSEventHookInfoPtr info;
 
-    if (VIR_ALLOC(info) < 0)
-        return -1;
+    info = g_new0(libxlOSEventHookInfo, 1);
 
     info->ctx = priv;
     info->xl_priv = xl_priv;
@@ -239,8 +238,7 @@ libxlTimeoutRegisterEventHook(void *priv,
     gint64 res_ms;
     int timeout;
 
-    if (VIR_ALLOC(info) < 0)
-        return -1;
+    info = g_new0(libxlOSEventHookInfo, 1);
 
     info->ctx = priv;
     info->xl_priv = xl_priv;
@@ -671,8 +669,7 @@ libxlStateInitialize(bool privileged,
     if (!libxlDriverShouldLoad(privileged))
         return VIR_DRV_STATE_INIT_SKIPPED;
 
-    if (VIR_ALLOC(libxl_driver) < 0)
-        return VIR_DRV_STATE_INIT_ERROR;
+    libxl_driver = g_new0(libxlDriverPrivate, 1);
 
     libxl_driver->lockFD = -1;
     if (virMutexInit(&libxl_driver->lock) < 0) {
@@ -2316,8 +2313,7 @@ libxlDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus,
         goto endjob;
 
     maplen = VIR_CPU_MAPLEN(nvcpus);
-    if (VIR_ALLOC_N(bitmask, maplen) < 0)
-        goto endjob;
+    bitmask = g_new0(uint8_t, maplen);
 
     for (i = 0; i < nvcpus; ++i) {
         pos = i / 8;
@@ -2766,7 +2762,7 @@ libxlConnectDomainXMLToNative(virConnectPtr conn, const char * nativeFormat,
         goto cleanup;
     }
 
-    if (VIR_ALLOC_N(ret, len) < 0)
+    ret = g_new0(char, len);
         goto cleanup;
 
     if (virConfWriteMem(ret, &len, conf) < 0) {
@@ -6373,15 +6369,15 @@ libxlGetDHCPInterfaces(virDomainObjPtr vm,
             goto error;
 
         if (n_leases) {
-            ifaces_ret = g_renew(typeof(*ifaces_ret), ifaces_ret, ifaces_count + 1);
-            ifaces_ret[ifaces_count] = g_new0(typeof(**ifaces_ret), 1);
+            ifaces_ret = g_renew(virDomainInterfacePtr, ifaces_ret, ifaces_count + 1);
+            ifaces_ret[ifaces_count] = g_new0(virDomainInterface, 1);
             iface = ifaces_ret[ifaces_count];
             ifaces_count++;
 
             /* Assuming each lease corresponds to a separate IP */
             iface->naddrs = n_leases;
 
-            iface->addrs = g_new0(typeof(*iface->addrs), iface->naddrs);
+            iface->addrs = g_new0(virDomainIPAddress, iface->naddrs);
             iface->name = g_strdup(vm->def->nets[i]->ifname);
             iface->hwaddr = g_strdup(macaddr);
         }
diff --git a/src/libxl/libxl_migration.c b/src/libxl/libxl_migration.c
index 87cd5337ba..6dc6812ee7 100644
--- a/src/libxl/libxl_migration.c
+++ b/src/libxl/libxl_migration.c
@@ -92,8 +92,7 @@ libxlMigrationCookieNew(virDomainObjPtr dom)
 {
     libxlMigrationCookiePtr mig = NULL;
 
-    if (VIR_ALLOC(mig) < 0)
-        goto error;
+    mig = g_new0(libxlMigrationCookie, 1);
 
     mig->name = g_strdup(dom->def->name);
 
@@ -160,8 +159,7 @@ libxlMigrationEatCookie(const char *cookiein,
      * specify a stream version.
      */
     if (!cookiein || !cookieinlen) {
-        if (VIR_ALLOC(mig) < 0)
-            return -1;
+        mig = g_new0(libxlMigrationCookie, 1);
 
         mig->xenMigStreamVer = 1;
         *migout = mig;
@@ -176,8 +174,7 @@ libxlMigrationEatCookie(const char *cookiein,
 
     VIR_DEBUG("cookielen=%d cookie='%s'", cookieinlen, NULLSTR(cookiein));
 
-    if (VIR_ALLOC(mig) < 0)
-        return -1;
+    mig = g_new0(libxlMigrationCookie, 1);
 
     if (!(doc = virXMLParseStringCtxt(cookiein,
                                       _("(libxl_migration_cookie)"),
@@ -313,8 +310,7 @@ libxlMigrateDstReceive(virNetSocketPtr sock,
      */
     args->recvfd = recvfd;
     VIR_FREE(priv->migrationDstReceiveThr);
-    if (VIR_ALLOC(priv->migrationDstReceiveThr) < 0)
-        goto fail;
+    priv->migrationDstReceiveThr = g_new0(virThread, 1);
 
     name = g_strdup_printf("mig-%s", args->vm->def->name);
     if (virThreadCreateFull(priv->migrationDstReceiveThr, true,
@@ -614,8 +610,7 @@ libxlDomainMigrationDstPrepareTunnel3(virConnectPtr dconn,
     mig = NULL;
 
     VIR_FREE(priv->migrationDstReceiveThr);
-    if (VIR_ALLOC(priv->migrationDstReceiveThr) < 0)
-        goto error;
+    priv->migrationDstReceiveThr = g_new0(virThread, 1);
     name = g_strdup_printf("mig-%s", args->vm->def->name);
     if (virThreadCreateFull(priv->migrationDstReceiveThr, true,
                             libxlDoMigrateDstReceive,
@@ -849,8 +844,7 @@ static void libxlTunnel3MigrationSrcFunc(void *arg)
     struct pollfd fds[1];
     int timeout = -1;
 
-    if (VIR_ALLOC_N(buffer, TUNNEL_SEND_BUF_SIZE) < 0)
-        return;
+    buffer = g_new0(char, TUNNEL_SEND_BUF_SIZE);
 
     fds[0].fd = data->srcFD;
     for (;;) {
@@ -920,8 +914,7 @@ libxlMigrationSrcStartTunnel(libxlDriverPrivatePtr driver,
     int ret = -1;
     g_autofree char *name = NULL;
 
-    if (VIR_ALLOC(tc) < 0)
-        goto out;
+    tc = g_new0(struct libxlTunnelControl, 1);
     *tnl = tc;
 
     tc->dataFD[0] = -1;
diff --git a/src/libxl/xen_common.c b/src/libxl/xen_common.c
index 56702a2a76..7b6a7b6e9f 100644
--- a/src/libxl/xen_common.c
+++ b/src/libxl/xen_common.c
@@ -253,8 +253,7 @@ xenConfigSetInt(virConfPtr conf, const char *setting, long long l)
                        l, setting);
         return -1;
     }
-    if (VIR_ALLOC(value) < 0)
-        return -1;
+    value = g_new0(virConfValue, 1);
 
     value->type = VIR_CONF_LLONG;
     value->next = NULL;
@@ -269,8 +268,7 @@ xenConfigSetString(virConfPtr conf, const char *setting, const char *str)
 {
     virConfValuePtr value = NULL;
 
-    if (VIR_ALLOC(value) < 0)
-        return -1;
+    value = g_new0(virConfValue, 1);
 
     value->type = VIR_CONF_STRING;
     value->next = NULL;
@@ -554,10 +552,10 @@ xenParseHypervisorFeatures(virConfPtr conf, virDomainDefPtr def)
         return -1;
 
     if (strval) {
-        if (VIR_EXPAND_N(def->clock.timers, def->clock.ntimers, 1) < 0 ||
-            VIR_ALLOC(timer) < 0)
+        if (VIR_EXPAND_N(def->clock.timers, def->clock.ntimers, 1) < 0)
             return -1;
 
+        timer = g_new0(virDomainTimerDef, 1);
         timer->name = VIR_DOMAIN_TIMER_NAME_TSC;
         timer->present = 1;
         timer->tickpolicy = -1;
@@ -627,10 +625,10 @@ xenParseHypervisorFeatures(virConfPtr conf, virDomainDefPtr def)
             return -1;
 
         if (val != -1) {
-            if (VIR_EXPAND_N(def->clock.timers, def->clock.ntimers, 1) < 0 ||
-                VIR_ALLOC(timer) < 0)
+            if (VIR_EXPAND_N(def->clock.timers, def->clock.ntimers, 1) < 0)
                 return -1;
 
+            timer = g_new0(virDomainTimerDef, 1);
             timer->name = VIR_DOMAIN_TIMER_NAME_HPET;
             timer->present = val;
             timer->tickpolicy = -1;
@@ -666,8 +664,7 @@ xenParseVfb(virConfPtr conf, virDomainDefPtr def)
         if (xenConfigGetBool(conf, "vnc", &val, 0) < 0)
             goto cleanup;
         if (val) {
-            if (VIR_ALLOC(graphics) < 0)
-                goto cleanup;
+            graphics = g_new0(virDomainGraphicsDef, 1);
             graphics->type = VIR_DOMAIN_GRAPHICS_TYPE_VNC;
             if (xenConfigGetBool(conf, "vncunused", &val, 1) < 0)
                 goto cleanup;
@@ -689,8 +686,7 @@ xenParseVfb(virConfPtr conf, virDomainDefPtr def)
                 goto cleanup;
             if (xenConfigCopyStringOpt(conf, "keymap", &graphics->data.vnc.keymap) < 0)
                 goto cleanup;
-            if (VIR_ALLOC_N(def->graphics, 1) < 0)
-                goto cleanup;
+            def->graphics = g_new0(virDomainGraphicsDefPtr, 1);
             def->graphics[0] = graphics;
             def->ngraphics = 1;
             graphics = NULL;
@@ -698,15 +694,13 @@ xenParseVfb(virConfPtr conf, virDomainDefPtr def)
             if (xenConfigGetBool(conf, "sdl", &val, 0) < 0)
                 goto cleanup;
             if (val) {
-                if (VIR_ALLOC(graphics) < 0)
-                    goto cleanup;
+                graphics = g_new0(virDomainGraphicsDef, 1);
                 graphics->type = VIR_DOMAIN_GRAPHICS_TYPE_SDL;
                 if (xenConfigCopyStringOpt(conf, "display", &graphics->data.sdl.display) < 0)
                     goto cleanup;
                 if (xenConfigCopyStringOpt(conf, "xauthority", &graphics->data.sdl.xauth) < 0)
                     goto cleanup;
-                if (VIR_ALLOC_N(def->graphics, 1) < 0)
-                    goto cleanup;
+                def->graphics = g_new0(virDomainGraphicsDefPtr, 1);
                 def->graphics[0] = graphics;
                 def->ngraphics = 1;
                 graphics = NULL;
@@ -729,8 +723,7 @@ xenParseVfb(virConfPtr conf, virDomainDefPtr def)
                 goto cleanup;
             }
 
-            if (VIR_ALLOC(graphics) < 0)
-                goto cleanup;
+            graphics = g_new0(virDomainGraphicsDef, 1);
             if (strstr(key, "type=sdl"))
                 graphics->type = VIR_DOMAIN_GRAPHICS_TYPE_SDL;
             else
@@ -785,8 +778,7 @@ xenParseVfb(virConfPtr conf, virDomainDefPtr def)
                     goto cleanup;
                 VIR_FREE(listenAddr);
             }
-            if (VIR_ALLOC_N(def->graphics, 1) < 0)
-                goto cleanup;
+            def->graphics = g_new0(virDomainGraphicsDefPtr, 1);
             def->graphics[0] = graphics;
             def->ngraphics = 1;
             graphics = NULL;
@@ -962,8 +954,7 @@ xenParseCharDev(virConfPtr conf, virDomainDefPtr def, const char *nativeFormat)
             !(chr = xenParseSxprChar(parallel, NULL)))
             goto cleanup;
         if (chr) {
-            if (VIR_ALLOC_N(def->parallels, 1) < 0)
-                goto cleanup;
+            def->parallels = g_new0(virDomainChrDefPtr, 1);
 
             chr->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL;
             chr->target.port = 0;
@@ -1010,8 +1001,7 @@ xenParseCharDev(virConfPtr conf, virDomainDefPtr def, const char *nativeFormat)
                 !(chr = xenParseSxprChar(serial, NULL)))
                 goto cleanup;
             if (chr) {
-                if (VIR_ALLOC_N(def->serials, 1) < 0)
-                    goto cleanup;
+                def->serials = g_new0(virDomainChrDefPtr, 1);
                 chr->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL;
                 chr->target.port = 0;
                 def->serials[0] = chr;
@@ -1019,8 +1009,7 @@ xenParseCharDev(virConfPtr conf, virDomainDefPtr def, const char *nativeFormat)
             }
         }
     } else {
-        if (VIR_ALLOC_N(def->consoles, 1) < 0)
-            goto cleanup;
+        def->consoles = g_new0(virDomainChrDefPtr, 1);
         def->nconsoles = 1;
         if (!(def->consoles[0] = xenParseSxprChar("pty", NULL)))
             goto cleanup;
@@ -1051,15 +1040,11 @@ xenParseVifBridge(virDomainNetDefPtr net, char *bridge)
         if (virStrToLong_ui(vlanstr, NULL, 10, &tag) < 0)
             return -1;
 
-        if (VIR_ALLOC_N(net->vlan.tag, 1) < 0)
-            return -1;
-
+        net->vlan.tag = g_new0(unsigned int, 1);
         net->vlan.tag[0] = tag;
         net->vlan.nTags = 1;
 
-        if (VIR_ALLOC(net->virtPortProfile) < 0)
-            return -1;
-
+        net->virtPortProfile = g_new0(virNetDevVPortProfile, 1);
         net->virtPortProfile->virtPortType = VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH;
         return 0;
     } else if ((vlanstr = strchr(bridge, ':'))) {
@@ -1076,10 +1061,7 @@ xenParseVifBridge(virDomainNetDefPtr net, char *bridge)
         for (i = 1; vlanstr_list[i]; i++)
             nvlans++;
 
-        if (VIR_ALLOC_N(net->vlan.tag, nvlans) < 0) {
-            g_strfreev(vlanstr_list);
-            return -1;
-        }
+        net->vlan.tag = g_new0(unsigned int, nvlans);
 
         for (i = 1; i <= nvlans; i++) {
             if (virStrToLong_ui(vlanstr_list[i], NULL, 10, &tag) < 0) {
@@ -1092,9 +1074,7 @@ xenParseVifBridge(virDomainNetDefPtr net, char *bridge)
         net->vlan.trunk = true;
         g_strfreev(vlanstr_list);
 
-        if (VIR_ALLOC(net->virtPortProfile) < 0)
-            return -1;
-
+        net->virtPortProfile = g_new0(virNetDevVPortProfile, 1);
         net->virtPortProfile->virtPortType = VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH;
         return 0;
     } else {
@@ -1314,14 +1294,8 @@ xenParseVif(char *entry, const char *vif_typename)
         if (xenParseSxprVifRate(rate, &kbytes_per_sec) < 0)
             goto cleanup;
 
-        if (VIR_ALLOC(bandwidth) < 0)
-            goto cleanup;
-
-        if (VIR_ALLOC(bandwidth->out) < 0) {
-            VIR_FREE(bandwidth);
-            goto cleanup;
-        }
-
+        bandwidth = g_new0(virNetDevBandwidth, 1);
+        bandwidth->out = g_new0(virNetDevBandwidthRate, 1);
         bandwidth->out->average = kbytes_per_sec;
         net->bandwidth = bandwidth;
     }
@@ -1393,15 +1367,11 @@ xenParseSxprSound(virDomainDefPtr def,
          * Hence use of MODEL_ES1370 + 1, instead of MODEL_LAST
          */
 
-        if (VIR_ALLOC_N(def->sounds,
-                        VIR_DOMAIN_SOUND_MODEL_ES1370 + 1) < 0)
-            return -1;
-
+        def->sounds = g_new0(virDomainSoundDefPtr,
+                             VIR_DOMAIN_SOUND_MODEL_ES1370 + 1);
 
         for (i = 0; i < (VIR_DOMAIN_SOUND_MODEL_ES1370 + 1); i++) {
-            virDomainSoundDefPtr sound;
-            if (VIR_ALLOC(sound) < 0)
-                return -1;
+            virDomainSoundDefPtr sound = g_new0(virDomainSoundDef, 1);
             sound->model = i;
             def->sounds[def->nsounds++] = sound;
         }
@@ -1424,8 +1394,7 @@ xenParseSxprSound(virDomainDefPtr def,
                 return -1;
             }
 
-            if (VIR_ALLOC(sound) < 0)
-                return -1;
+            sound = g_new0(virDomainSoundDef, 1);
 
             if ((sound->model = virDomainSoundModelTypeFromString(model)) < 0) {
                 VIR_FREE(sound);
@@ -1661,8 +1630,7 @@ xenFormatSerial(virConfValuePtr list, virDomainChrDefPtr serial)
         virBufferAddLit(&buf, "none");
     }
 
-    if (VIR_ALLOC(val) < 0)
-        return -1;
+    val = g_new0(virConfValue, 1);
 
     val->type = VIR_CONF_STRING;
     val->str = virBufferContentAndReset(&buf);
@@ -1684,8 +1652,7 @@ xenMakeIPList(virNetDevIPInfoPtr guestIP)
     char **address_array;
     char *ret = NULL;
 
-    if (VIR_ALLOC_N(address_array, guestIP->nips + 1) < 0)
-        return NULL;
+    address_array = g_new0(char *, guestIP->nips + 1);
 
     for (i = 0; i < guestIP->nips; i++) {
         address_array[i] = virSocketAddrFormat(&guestIP->ips[i]->address);
@@ -1822,9 +1789,7 @@ xenFormatNet(virConnectPtr conn,
     if (net->bandwidth && net->bandwidth->out && net->bandwidth->out->average)
         virBufferAsprintf(&buf, ",rate=%lluKB/s", net->bandwidth->out->average);
 
-    if (VIR_ALLOC(val) < 0)
-        return -1;
-
+    val = g_new0(virConfValue, 1);
     val->type = VIR_CONF_STRING;
     val->str = virBufferContentAndReset(&buf);
     tmp = list->list;
@@ -1854,8 +1819,7 @@ xenFormatPCI(virConfPtr conf, virDomainDefPtr def)
     if (!hasPCI)
         return 0;
 
-    if (VIR_ALLOC(pciVal) < 0)
-        return -1;
+    pciVal = g_new0(virConfValue, 1);
 
     pciVal->type = VIR_CONF_LIST;
     pciVal->list = NULL;
@@ -1888,10 +1852,7 @@ xenFormatPCI(virConfPtr conf, virDomainDefPtr def)
                                   permissive_str);
 
 
-            if (VIR_ALLOC(val) < 0) {
-                VIR_FREE(buf);
-                goto error;
-            }
+            val = g_new0(virConfValue, 1);
             val->type = VIR_CONF_STRING;
             val->str = buf;
             tmp = pciVal->list;
@@ -1913,10 +1874,6 @@ xenFormatPCI(virConfPtr conf, virDomainDefPtr def)
     VIR_FREE(pciVal);
 
     return 0;
-
- error:
-    virConfFreeValue(pciVal);
-    return -1;
 }
 
 
@@ -2098,9 +2055,7 @@ xenFormatCharDev(virConfPtr conf, virDomainDefPtr def,
                     return -1;
                 }
 
-                if (VIR_ALLOC(serialVal) < 0)
-                    return -1;
-
+                serialVal = g_new0(virConfValue, 1);
                 serialVal->type = VIR_CONF_LIST;
                 serialVal->list = NULL;
 
@@ -2385,16 +2340,8 @@ xenFormatVfb(virConfPtr conf, virDomainDefPtr def)
 
             vfbstr = virBufferContentAndReset(&buf);
 
-            if (VIR_ALLOC(vfb) < 0) {
-                VIR_FREE(vfbstr);
-                return -1;
-            }
-
-            if (VIR_ALLOC(disp) < 0) {
-                VIR_FREE(vfb);
-                VIR_FREE(vfbstr);
-                return -1;
-            }
+            vfb = g_new0(virConfValue, 1);
+            disp = g_new0(virConfValue, 1);
 
             vfb->type = VIR_CONF_LIST;
             vfb->list = disp;
@@ -2450,8 +2397,7 @@ xenFormatVif(virConfPtr conf,
     size_t i;
     int hvm = def->os.type == VIR_DOMAIN_OSTYPE_HVM;
 
-    if (VIR_ALLOC(netVal) < 0)
-        goto cleanup;
+    netVal = g_new0(virConfValue, 1);
     netVal->type = VIR_CONF_LIST;
     netVal->list = NULL;
 
diff --git a/src/libxl/xen_xl.c b/src/libxl/xen_xl.c
index 30a8125f5f..74f48e4117 100644
--- a/src/libxl/xen_xl.c
+++ b/src/libxl/xen_xl.c
@@ -110,9 +110,7 @@ xenParseXLOS(virConfPtr conf, virDomainDefPtr def, virCapsPtr caps)
             return -1;
 
         if (bios && STREQ(bios, "ovmf")) {
-            if (VIR_ALLOC(def->os.loader) < 0)
-                return -1;
-
+            def->os.loader = g_new0(virDomainLoaderDef, 1);
             def->os.loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH;
             def->os.loader->readonly = VIR_TRISTATE_BOOL_YES;
 
@@ -121,8 +119,7 @@ xenParseXLOS(virConfPtr conf, virDomainDefPtr def, virCapsPtr caps)
             for (i = 0; i < caps->nguests; i++) {
                 if (caps->guests[i]->ostype == VIR_DOMAIN_OSTYPE_HVM &&
                     caps->guests[i]->arch.id == def->os.arch) {
-                    if (VIR_ALLOC(def->os.loader) < 0)
-                        return -1;
+                    def->os.loader = g_new0(virDomainLoaderDef, 1);
                     def->os.loader->path = g_strdup(caps->guests[i]->arch.defaultInfo.loader);
                 }
             }
@@ -345,9 +342,7 @@ xenParseXLSpice(virConfPtr conf, virDomainDefPtr def)
             return -1;
 
         if (val) {
-            if (VIR_ALLOC(graphics) < 0)
-                return -1;
-
+            graphics = g_new0(virDomainGraphicsDef, 1);
             graphics->type = VIR_DOMAIN_GRAPHICS_TYPE_SPICE;
             if (xenConfigCopyStringOpt(conf, "spicehost", &listenAddr) < 0)
                 goto cleanup;
@@ -394,8 +389,7 @@ xenParseXLSpice(virConfPtr conf, virDomainDefPtr def)
             else
                 graphics->data.spice.copypaste = VIR_TRISTATE_BOOL_NO;
 
-            if (VIR_ALLOC_N(def->graphics, 1) < 0)
-                goto cleanup;
+            def->graphics = g_new0(virDomainGraphicsDefPtr, 1);
             def->graphics[0] = graphics;
             def->ngraphics = 1;
         }
@@ -702,8 +696,7 @@ xenParseXLDisk(virConfPtr conf, virDomainDefPtr def)
     libxl_device_disk *libxldisk;
     virDomainDiskDefPtr disk = NULL;
 
-    if (VIR_ALLOC(libxldisk) < 0)
-        return -1;
+    libxldisk = g_new0(libxl_device_disk, 1);
 
     if (!(xluconf = xlu_cfg_init(stderr, "command line")))
         goto cleanup;
@@ -868,8 +861,8 @@ xenParseXLInputDevs(virConfPtr conf, virDomainDefPtr def)
                      STREQ(str, "mouse") ||
                      STREQ(str, "keyboard"))) {
                 virDomainInputDefPtr input;
-                if (VIR_ALLOC(input) < 0)
-                    return -1;
+                input = g_new0(virDomainInputDef,
+                               1);
 
                 input->bus = VIR_DOMAIN_INPUT_BUS_USB;
                 if (STREQ(str, "mouse"))
@@ -1397,8 +1390,7 @@ xenFormatXLCPUID(virConfPtr conf, virDomainDefPtr def)
     }
 
     /* "host" + all features + NULL */
-    if (VIR_ALLOC_N(cpuid_pairs, def->cpu->nfeatures + 2) < 0)
-        return -1;
+    cpuid_pairs = g_new0(char *, def->cpu->nfeatures + 2);
 
     cpuid_pairs[0] = g_strdup("host");
 
@@ -1455,8 +1447,7 @@ xenFormatXLVnode(virConfValuePtr list,
 {
     virConfValuePtr numaPnode, tmp;
 
-    if (VIR_ALLOC(numaPnode) < 0)
-        return -1;
+    numaPnode = g_new0(virConfValue, 1);
 
     /* Place VNODE directive */
     numaPnode->type = VIR_CONF_STRING;
@@ -1487,10 +1478,10 @@ xenFormatXLVnuma(virConfValuePtr list,
     size_t nodeSize = virDomainNumaGetNodeMemorySize(numa, node) / 1024;
     g_autofree char *nodeVcpus = NULL;
 
-    if (!cpumask ||
-        VIR_ALLOC(numaVnode) < 0)
-        goto cleanup;
+    if (!cpumask)
+        return -1;
 
+    numaVnode = g_new0(virConfValue, 1);
     numaVnode->type = VIR_CONF_LIST;
     numaVnode->list = NULL;
 
@@ -1527,7 +1518,6 @@ xenFormatXLVnuma(virConfValuePtr list,
         list->list = numaVnode;
     ret = 0;
 
- cleanup:
     VIR_FREE(nodeVcpus);
     return ret;
 }
@@ -1544,8 +1534,7 @@ xenFormatXLDomainVnuma(virConfPtr conf,
     if (numa == NULL)
         return -1;
 
-    if (VIR_ALLOC(vnumaVal) < 0)
-        return -1;
+    vnumaVal = g_new0(virConfValue, 1);
 
     vnumaVal->type = VIR_CONF_LIST;
     vnumaVal->list = NULL;
@@ -1772,8 +1761,7 @@ xenFormatXLDisk(virConfValuePtr list, virDomainDiskDefPtr disk)
     if (target)
         virBufferAsprintf(&buf, ",target=%s", target);
 
-    if (VIR_ALLOC(val) < 0)
-        goto cleanup;
+    val = g_new0(virConfValue, 1);
 
     val->type = VIR_CONF_STRING;
     val->str = virBufferContentAndReset(&buf);
@@ -1798,8 +1786,7 @@ xenFormatXLDomainDisks(virConfPtr conf, virDomainDefPtr def)
     virConfValuePtr diskVal;
     size_t i;
 
-    if (VIR_ALLOC(diskVal) < 0)
-        return -1;
+    diskVal = g_new0(virConfValue, 1);
 
     diskVal->type = VIR_CONF_LIST;
     diskVal->list = NULL;
@@ -1923,9 +1910,7 @@ xenFormatXLInputDevs(virConfPtr conf, virDomainDefPtr def)
     virConfValuePtr usbdevices = NULL, lastdev;
 
     if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
-        if (VIR_ALLOC(usbdevices) < 0)
-            goto error;
-
+        usbdevices = g_new0(virConfValue, 1);
         usbdevices->type = VIR_CONF_LIST;
         usbdevices->list = NULL;
         lastdev = NULL;
@@ -1949,12 +1934,10 @@ xenFormatXLInputDevs(virConfPtr conf, virDomainDefPtr def)
                 }
 
                 if (lastdev == NULL) {
-                    if (VIR_ALLOC(lastdev) < 0)
-                        goto error;
+                    lastdev = g_new0(virConfValue, 1);
                     usbdevices->list = lastdev;
                 } else {
-                    if (VIR_ALLOC(lastdev->next) < 0)
-                        goto error;
+                    lastdev->next = g_new0(virConfValue, 1);
                     lastdev = lastdev->next;
                 }
                 lastdev->type = VIR_CONF_STRING;
@@ -2000,8 +1983,7 @@ xenFormatXLUSBController(virConfPtr conf,
     if (!hasUSBCtrl)
         return 0;
 
-    if (VIR_ALLOC(usbctrlVal) < 0)
-        return -1;
+    usbctrlVal = g_new0(virConfValue, 1);
 
     usbctrlVal->type = VIR_CONF_LIST;
     usbctrlVal->list = NULL;
@@ -2030,9 +2012,7 @@ xenFormatXLUSBController(virConfPtr conf,
                 virBufferAsprintf(&buf, "ports=%x",
                                   def->controllers[i]->opts.usbopts.ports);
 
-            if (VIR_ALLOC(val) < 0)
-                goto error;
-
+            val = g_new0(virConfValue, 1);
             val->type = VIR_CONF_STRING;
             val->str = virBufferContentAndReset(&buf);
             tmp = usbctrlVal->list;
@@ -2080,8 +2060,7 @@ xenFormatXLUSB(virConfPtr conf,
     if (!hasUSB)
         return 0;
 
-    if (VIR_ALLOC(usbVal) < 0)
-        return -1;
+    usbVal = g_new0(virConfValue, 1);
 
     usbVal->type = VIR_CONF_LIST;
     usbVal->list = NULL;
@@ -2096,10 +2075,7 @@ xenFormatXLUSB(virConfPtr conf,
                                   def->hostdevs[i]->source.subsys.u.usb.bus,
                                   def->hostdevs[i]->source.subsys.u.usb.device);
 
-            if (VIR_ALLOC(val) < 0) {
-                VIR_FREE(buf);
-                goto error;
-            }
+            val = g_new0(virConfValue, 1);
             val->type = VIR_CONF_STRING;
             val->str = buf;
             tmp = usbVal->list;
@@ -2121,10 +2097,6 @@ xenFormatXLUSB(virConfPtr conf,
     VIR_FREE(usbVal);
 
     return 0;
-
- error:
-    virConfFreeValue(usbVal);
-    return -1;
 }
 
 static int
@@ -2154,9 +2126,7 @@ xenFormatXLChannel(virConfValuePtr list, virDomainChrDefPtr channel)
     /* name */
     virBufferAsprintf(&buf, "name=%s", channel->target.name);
 
-    if (VIR_ALLOC(val) < 0)
-        return -1;
-
+    val = g_new0(virConfValue, 1);
     val->type = VIR_CONF_STRING;
     val->str = virBufferContentAndReset(&buf);
     tmp = list->list;
@@ -2175,8 +2145,7 @@ xenFormatXLDomainChannels(virConfPtr conf, virDomainDefPtr def)
     virConfValuePtr channelVal = NULL;
     size_t i;
 
-    if (VIR_ALLOC(channelVal) < 0)
-        goto cleanup;
+    channelVal = g_new0(virConfValue, 1);
 
     channelVal->type = VIR_CONF_LIST;
     channelVal->list = NULL;
@@ -2219,8 +2188,7 @@ xenFormatXLDomainNamespaceData(virConfPtr conf, virDomainDefPtr def)
     if (nsdata->num_args == 0)
         return 0;
 
-    if (VIR_ALLOC(args) < 0)
-        return -1;
+    args = g_new0(virConfValue, 1);
 
     args->type = VIR_CONF_LIST;
     args->list = NULL;
@@ -2228,8 +2196,7 @@ xenFormatXLDomainNamespaceData(virConfPtr conf, virDomainDefPtr def)
     for (i = 0; i < nsdata->num_args; i++) {
         virConfValuePtr val, tmp;
 
-        if (VIR_ALLOC(val) < 0)
-            goto error;
+        val = g_new0(virConfValue, 1);
 
         val->type = VIR_CONF_STRING;
         val->str = g_strdup(nsdata->args[i]);
diff --git a/src/libxl/xen_xm.c b/src/libxl/xen_xm.c
index edf86abc64..8ade5aec1c 100644
--- a/src/libxl/xen_xm.c
+++ b/src/libxl/xen_xm.c
@@ -148,8 +148,7 @@ xenParseXMDisk(char *entry, int hvm)
     if (!(offset = strchr(head, ',')))
         goto error;
 
-    if (VIR_ALLOC_N(disk->dst, (offset - head) + 1) < 0)
-        goto error;
+    disk->dst = g_new0(char, (offset - head) + 1);
 
     if (virStrncpy(disk->dst, head, offset - head,
                    (offset - head) + 1) < 0) {
@@ -368,8 +367,7 @@ xenFormatXMDisks(virConfPtr conf, virDomainDefPtr def)
     virConfValuePtr diskVal = NULL;
     size_t i = 0;
 
-    if (VIR_ALLOC(diskVal) < 0)
-        goto cleanup;
+    diskVal = g_new0(virConfValue, 1);
 
     diskVal->type = VIR_CONF_LIST;
     diskVal->list = NULL;
@@ -411,8 +409,7 @@ xenParseXMInputDevs(virConfPtr conf, virDomainDefPtr def)
                  STREQ(str, "mouse") ||
                  STREQ(str, "keyboard"))) {
             virDomainInputDefPtr input;
-            if (VIR_ALLOC(input) < 0)
-                return -1;
+            input = g_new0(virDomainInputDef, 1);
 
             input->bus = VIR_DOMAIN_INPUT_BUS_USB;
             if (STREQ(str, "mouse"))
-- 
2.26.2




More information about the libvir-list mailing list