From nobody Sun Feb 8 18:49:13 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1549460552546386.94028627184355; Wed, 6 Feb 2019 05:42:32 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1226987638; Wed, 6 Feb 2019 13:42:30 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9DD5B6444E; Wed, 6 Feb 2019 13:42:29 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 403FD180339F; Wed, 6 Feb 2019 13:42:29 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x16Dg7Zk001952 for ; Wed, 6 Feb 2019 08:42:07 -0500 Received: by smtp.corp.redhat.com (Postfix) id 8254C5C26D; Wed, 6 Feb 2019 13:42:07 +0000 (UTC) Received: from unknown0050b6a41c42.attlocal.net.com (ovpn-116-19.phx2.redhat.com [10.3.116.19]) by smtp.corp.redhat.com (Postfix) with ESMTP id 24F45660B8 for ; Wed, 6 Feb 2019 13:42:07 +0000 (UTC) From: John Ferlan To: libvir-list@redhat.com Date: Wed, 6 Feb 2019 08:41:38 -0500 Message-Id: <20190206134147.18032-7-jferlan@redhat.com> In-Reply-To: <20190206134147.18032-1-jferlan@redhat.com> References: <20190206134147.18032-1-jferlan@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 06/15] storage: Use VIR_AUTOPTR(virCommand) X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Wed, 06 Feb 2019 13:42:31 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Let's make use of the auto __cleanup capabilities cleaning up any now unnecessary goto paths. Signed-off-by: John Ferlan Reviewed-by: Erik Skultety --- src/storage/storage_backend_disk.c | 85 +++++++++------------ src/storage/storage_backend_fs.c | 39 +++------- src/storage/storage_backend_logical.c | 101 +++++++------------------ src/storage/storage_backend_sheepdog.c | 50 +++++------- src/storage/storage_backend_vstorage.c | 14 +--- src/storage/storage_backend_zfs.c | 47 +++--------- src/storage/storage_driver.c | 3 +- src/storage/storage_util.c | 34 +++------ src/util/virstoragefile.c | 63 +++++++-------- tests/storagepoolxml2argvtest.c | 3 +- tests/storagevolxml2argvtest.c | 6 +- tests/virstoragetest.c | 6 +- 12 files changed, 148 insertions(+), 303 deletions(-) diff --git a/src/storage/storage_backend_disk.c b/src/storage/storage_backe= nd_disk.c index 061c494b7d..230cf44b97 100644 --- a/src/storage/storage_backend_disk.c +++ b/src/storage/storage_backend_disk.c @@ -356,7 +356,7 @@ virStorageBackendDiskReadPartitions(virStoragePoolObjPt= r pool, =20 virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); char *parthelper_path; - virCommandPtr cmd; + VIR_AUTOPTR(virCommand) cmd =3D NULL; struct virStorageBackendDiskPoolVolData cbdata =3D { .pool =3D pool, .vol =3D vol, @@ -392,7 +392,6 @@ virStorageBackendDiskReadPartitions(virStoragePoolObjPt= r pool, 6, virStorageBackendDiskMakeVol, &cbdata); - virCommandFree(cmd); VIR_FREE(parthelper_path); return ret; } @@ -421,7 +420,7 @@ virStorageBackendDiskReadGeometry(virStoragePoolObjPtr = pool) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); char *parthelper_path; - virCommandPtr cmd; + VIR_AUTOPTR(virCommand) cmd =3D NULL; int ret; =20 if (!(parthelper_path =3D virFileFindResource("libvirt_parthelper", @@ -438,7 +437,6 @@ virStorageBackendDiskReadGeometry(virStoragePoolObjPtr = pool) 3, virStorageBackendDiskMakePoolGeometry, pool); - virCommandFree(cmd); VIR_FREE(parthelper_path); return ret; } @@ -502,51 +500,40 @@ virStorageBackendDiskBuildPool(virStoragePoolObjPtr p= ool, virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); int format =3D def->source.format; const char *fmt; - bool ok_to_mklabel =3D false; - int ret =3D -1; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 virCheckFlags(VIR_STORAGE_POOL_BUILD_OVERWRITE | - VIR_STORAGE_POOL_BUILD_NO_OVERWRITE, ret); + VIR_STORAGE_POOL_BUILD_NO_OVERWRITE, -1); =20 - VIR_EXCLUSIVE_FLAGS_GOTO(VIR_STORAGE_POOL_BUILD_OVERWRITE, - VIR_STORAGE_POOL_BUILD_NO_OVERWRITE, - error); + VIR_EXCLUSIVE_FLAGS_RET(VIR_STORAGE_POOL_BUILD_OVERWRITE, + VIR_STORAGE_POOL_BUILD_NO_OVERWRITE, + -1); =20 fmt =3D virStoragePoolFormatDiskTypeToString(format); - if (flags & VIR_STORAGE_POOL_BUILD_OVERWRITE) { - ok_to_mklabel =3D true; - } else { - if (virStorageBackendDeviceIsEmpty(def->source.devices[0].path, - fmt, true)) - ok_to_mklabel =3D true; - } + if (!(flags & VIR_STORAGE_POOL_BUILD_OVERWRITE) && + !(virStorageBackendDeviceIsEmpty(def->source.devices[0].path, + fmt, true))) + return -1; =20 - if (ok_to_mklabel) { - if (virStorageBackendZeroPartitionTable(def->source.devices[0].pat= h, - 1024 * 1024) < 0) - goto error; + if (virStorageBackendZeroPartitionTable(def->source.devices[0].path, + 1024 * 1024) < 0) + return -1; =20 - /* eg parted /dev/sda mklabel --script msdos */ - if (format =3D=3D VIR_STORAGE_POOL_DISK_UNKNOWN) - format =3D def->source.format =3D VIR_STORAGE_POOL_DISK_DOS; - if (format =3D=3D VIR_STORAGE_POOL_DISK_DOS) - fmt =3D "msdos"; - else - fmt =3D virStoragePoolFormatDiskTypeToString(format); - - cmd =3D virCommandNewArgList(PARTED, - def->source.devices[0].path, - "mklabel", - "--script", - fmt, - NULL); - ret =3D virCommandRun(cmd, NULL); - } + /* eg parted /dev/sda mklabel --script msdos */ + if (format =3D=3D VIR_STORAGE_POOL_DISK_UNKNOWN) + format =3D def->source.format =3D VIR_STORAGE_POOL_DISK_DOS; + if (format =3D=3D VIR_STORAGE_POOL_DISK_DOS) + fmt =3D "msdos"; + else + fmt =3D virStoragePoolFormatDiskTypeToString(format); =20 - error: - virCommandFree(cmd); - return ret; + cmd =3D virCommandNewArgList(PARTED, + def->source.devices[0].path, + "mklabel", + "--script", + fmt, + NULL); + return virCommandRun(cmd, NULL); } =20 =20 @@ -787,7 +774,7 @@ virStorageBackendDiskDeleteVol(virStoragePoolObjPtr poo= l, virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); char *src_path =3D def->source.devices[0].path; char *srcname =3D last_component(src_path); - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; bool isDevMapperDevice; int rc =3D -1; =20 @@ -862,7 +849,6 @@ virStorageBackendDiskDeleteVol(virStoragePoolObjPtr poo= l, rc =3D 0; cleanup: VIR_FREE(devpath); - virCommandFree(cmd); return rc; } =20 @@ -876,11 +862,13 @@ virStorageBackendDiskCreateVol(virStoragePoolObjPtr p= ool, unsigned long long startOffset =3D 0, endOffset =3D 0; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); virErrorPtr save_err; - virCommandPtr cmd =3D virCommandNewArgList(PARTED, - def->source.devices[0].path, - "mkpart", - "--script", - NULL); + VIR_AUTOPTR(virCommand) cmd =3D NULL; + + cmd =3D virCommandNewArgList(PARTED, + def->source.devices[0].path, + "mkpart", + "--script", + NULL); =20 if (vol->target.encryption && vol->target.encryption->format !=3D VIR_STORAGE_ENCRYPTION_FORMAT_= LUKS) { @@ -934,7 +922,6 @@ virStorageBackendDiskCreateVol(virStoragePoolObjPtr poo= l, =20 cleanup: VIR_FREE(partFormat); - virCommandFree(cmd); return res; =20 error: diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend= _fs.c index 06c76fde4f..7d05ceeeb8 100644 --- a/src/storage/storage_backend_fs.c +++ b/src/storage/storage_backend_fs.c @@ -95,8 +95,6 @@ virStorageBackendFileSystemNetFindPoolSourcesFunc(char **= const groups, static int virStorageBackendFileSystemNetFindNFSPoolSources(virNetfsDiscoverState *st= ate) { - int ret =3D -1; - /* * # showmount --no-headers -e HOSTNAME * /tmp * @@ -112,7 +110,7 @@ virStorageBackendFileSystemNetFindNFSPoolSources(virNet= fsDiscoverState *state) 1 }; =20 - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 cmd =3D virCommandNewArgList(SHOWMOUNT, "--no-headers", @@ -120,16 +118,9 @@ virStorageBackendFileSystemNetFindNFSPoolSources(virNe= tfsDiscoverState *state) state->host, NULL); =20 - if (virCommandRunRegex(cmd, 1, regexes, vars, - virStorageBackendFileSystemNetFindPoolSourcesFu= nc, - state, NULL, NULL) < 0) - goto cleanup; - - ret =3D 0; - - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRunRegex(cmd, 1, regexes, vars, + virStorageBackendFileSystemNetFindPoolSource= sFunc, + state, NULL, NULL); } =20 =20 @@ -309,7 +300,7 @@ virStorageBackendFileSystemMount(virStoragePoolObjPtr p= ool) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); char *src =3D NULL; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; int ret =3D -1; int rc; =20 @@ -334,7 +325,6 @@ virStorageBackendFileSystemMount(virStoragePoolObjPtr p= ool) =20 ret =3D 0; cleanup: - virCommandFree(cmd); VIR_FREE(src); return ret; } @@ -376,8 +366,7 @@ static int virStorageBackendFileSystemStop(virStoragePoolObjPtr pool) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; - int ret =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; int rc; =20 if (virStorageBackendFileSystemIsValid(pool) < 0) @@ -388,13 +377,7 @@ virStorageBackendFileSystemStop(virStoragePoolObjPtr p= ool) return rc; =20 cmd =3D virCommandNewArgList(UMOUNT, def->target.path, NULL); - if (virCommandRun(cmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } #endif /* WITH_STORAGE_FS */ =20 @@ -432,8 +415,7 @@ static int virStorageBackendExecuteMKFS(const char *device, const char *format) { - int ret =3D 0; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 cmd =3D virCommandNewArgList(MKFS, "-t", format, NULL); =20 @@ -456,11 +438,10 @@ virStorageBackendExecuteMKFS(const char *device, _("Failed to make filesystem of " "type '%s' on device '%s'"), format, device); - ret =3D -1; + return -1; } =20 - virCommandFree(cmd); - return ret; + return 0; } #else /* #ifdef MKFS */ static int diff --git a/src/storage/storage_backend_logical.c b/src/storage/storage_ba= ckend_logical.c index fd95bd0d48..e0ddc962b1 100644 --- a/src/storage/storage_backend_logical.c +++ b/src/storage/storage_backend_logical.c @@ -48,13 +48,11 @@ static int virStorageBackendLogicalSetActive(virStoragePoolObjPtr pool, bool on) { - int ret; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D virStorageBackendLogicalChangeCmd(VGCHANGE, def,= on); + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 - ret =3D virCommandRun(cmd, NULL); - virCommandFree(cmd); - return ret; + cmd =3D virStorageBackendLogicalChangeCmd(VGCHANGE, def, on); + return virCommandRun(cmd, NULL); } =20 =20 @@ -67,11 +65,11 @@ virStorageBackendLogicalSetActive(virStoragePoolObjPtr = pool, static void virStorageBackendLogicalRemoveDevice(const char *path) { - virCommandPtr cmd =3D virCommandNewArgList(PVREMOVE, path, NULL); + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 + cmd =3D virCommandNewArgList(PVREMOVE, path, NULL); if (virCommandRun(cmd, NULL) < 0) VIR_INFO("Failed to pvremove logical device '%s'", path); - virCommandFree(cmd); } =20 =20 @@ -85,8 +83,7 @@ virStorageBackendLogicalRemoveDevice(const char *path) static int virStorageBackendLogicalInitializeDevice(const char *path) { - int ret =3D -1; - virCommandPtr pvcmd =3D NULL; + VIR_AUTOPTR(virCommand) pvcmd =3D NULL; =20 /* * LVM requires that the first sector is blanked if using @@ -101,15 +98,7 @@ virStorageBackendLogicalInitializeDevice(const char *pa= th) * clever enough todo this for us :-( */ pvcmd =3D virCommandNewArgList(PVCREATE, path, NULL); - if (virCommandRun(pvcmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - - cleanup: - virCommandFree(pvcmd); - - return ret; + return virCommandRun(pvcmd, NULL); } =20 =20 @@ -426,8 +415,7 @@ virStorageBackendLogicalFindLVs(virStoragePoolObjPtr po= ol, int vars[] =3D { VIR_STORAGE_VOL_LOGICAL_REGEX_COUNT }; - int ret =3D -1; - virCommandPtr cmd; + VIR_AUTOPTR(virCommand) cmd =3D NULL; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); struct virStorageBackendLogicalPoolVolData cbdata =3D { .pool =3D pool, @@ -444,20 +432,9 @@ virStorageBackendLogicalFindLVs(virStoragePoolObjPtr p= ool, "lv_name,origin,uuid,devices,segtype,stripe= s,seg_size,vg_extent_size,size,lv_attr", def->source.name, NULL); - if (virCommandRunRegex(cmd, - 1, - regexes, - vars, - virStorageBackendLogicalMakeVol, - &cbdata, - "lvs", - NULL) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRunRegex(cmd, 1, regexes, vars, + virStorageBackendLogicalMakeVol, + &cbdata, "lvs", NULL); } =20 static int @@ -550,8 +527,7 @@ virStorageBackendLogicalGetPoolSources(virStoragePoolSo= urceListPtr sourceList) int vars[] =3D { 2 }; - virCommandPtr cmd; - int ret =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 /* * NOTE: ignoring errors here; this is just to "touch" any logical vol= umes @@ -567,15 +543,9 @@ virStorageBackendLogicalGetPoolSources(virStoragePoolS= ourceListPtr sourceList) "--noheadings", "-o", "pv_name,vg_name", NULL, NULL); - if (virCommandRunRegex(cmd, 1, regexes, vars, - virStorageBackendLogicalFindPoolSourcesFunc, - sourceList, "pvs", NULL) < 0) - goto cleanup; - ret =3D 0; - - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRunRegex(cmd, 1, regexes, vars, + virStorageBackendLogicalFindPoolSourcesFunc, + sourceList, "pvs", NULL); } =20 =20 @@ -737,7 +707,7 @@ virStorageBackendLogicalBuildPool(virStoragePoolObjPtr = pool, unsigned int flags) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr vgcmd =3D NULL; + VIR_AUTOPTR(virCommand) vgcmd =3D NULL; int ret =3D -1; size_t i =3D 0; =20 @@ -773,8 +743,6 @@ virStorageBackendLogicalBuildPool(virStoragePoolObjPtr = pool, ret =3D 0; =20 cleanup: - virCommandFree(vgcmd); - /* On any failure, run through the devices that had pvcreate run in * in order to run pvremove on the device; otherwise, subsequent build * will fail if a pvcreate had been run already. */ @@ -805,7 +773,7 @@ virStorageBackendLogicalRefreshPool(virStoragePoolObjPt= r pool) 2 }; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; int ret =3D -1; =20 virWaitForDevices(); @@ -838,7 +806,6 @@ virStorageBackendLogicalRefreshPool(virStoragePoolObjPt= r pool) ret =3D 0; =20 cleanup: - virCommandFree(cmd); if (ret < 0) virStoragePoolObjClearVols(pool); return ret; @@ -863,9 +830,8 @@ virStorageBackendLogicalDeletePool(virStoragePoolObjPtr= pool, unsigned int flags) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; size_t i; - int ret =3D -1; =20 virCheckFlags(0, -1); =20 @@ -874,17 +840,13 @@ virStorageBackendLogicalDeletePool(virStoragePoolObjP= tr pool, "-f", def->source.name, NULL); if (virCommandRun(cmd, NULL) < 0) - goto cleanup; + return -1; =20 /* now remove the pv devices and clear them out */ for (i =3D 0; i < def->source.ndevice; i++) virStorageBackendLogicalRemoveDevice(def->source.devices[i].path); =20 - ret =3D 0; - - cleanup: - virCommandFree(cmd); - return ret; + return 0; } =20 =20 @@ -893,10 +855,8 @@ virStorageBackendLogicalDeleteVol(virStoragePoolObjPtr= pool ATTRIBUTE_UNUSED, virStorageVolDefPtr vol, unsigned int flags) { - int ret =3D -1; - - virCommandPtr lvchange_cmd =3D NULL; - virCommandPtr lvremove_cmd =3D NULL; + VIR_AUTOPTR(virCommand) lvchange_cmd =3D NULL; + VIR_AUTOPTR(virCommand) lvremove_cmd =3D NULL; =20 virCheckFlags(0, -1); =20 @@ -907,18 +867,14 @@ virStorageBackendLogicalDeleteVol(virStoragePoolObjPt= r pool ATTRIBUTE_UNUSED, =20 if (virCommandRun(lvremove_cmd, NULL) < 0) { if (virCommandRun(lvchange_cmd, NULL) < 0) { - goto cleanup; + return -1; } else { if (virCommandRun(lvremove_cmd, NULL) < 0) - goto cleanup; + return -1; } } =20 - ret =3D 0; - cleanup: - virCommandFree(lvchange_cmd); - virCommandFree(lvremove_cmd); - return ret; + return 0; } =20 =20 @@ -926,9 +882,8 @@ static int virStorageBackendLogicalLVCreate(virStorageVolDefPtr vol, virStoragePoolDefPtr def) { - int ret; unsigned long long capacity =3D vol->target.capacity; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 if (vol->target.encryption && vol->target.encryption->format !=3D VIR_STORAGE_ENCRYPTION_FORMAT_= LUKS) { @@ -961,9 +916,7 @@ virStorageBackendLogicalLVCreate(virStorageVolDefPtr vo= l, else virCommandAddArg(cmd, def->source.name); =20 - ret =3D virCommandRun(cmd, NULL); - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 =20 diff --git a/src/storage/storage_backend_sheepdog.c b/src/storage/storage_b= ackend_sheepdog.c index 458dbca58b..d9de74f52e 100644 --- a/src/storage/storage_backend_sheepdog.c +++ b/src/storage/storage_backend_sheepdog.c @@ -140,9 +140,10 @@ virStorageBackendSheepdogRefreshAllVol(virStoragePoolO= bjPtr pool) char *output =3D NULL; VIR_AUTOPTR(virString) lines =3D NULL; VIR_AUTOPTR(virString) cells =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; size_t i; =20 - virCommandPtr cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "list",= "-r", NULL); + cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "list", "-r", NULL); virStorageBackendSheepdogAddHostArg(cmd, pool); virCommandSetOutputBuffer(cmd, &output); if (virCommandRun(cmd, NULL) < 0) @@ -172,7 +173,6 @@ virStorageBackendSheepdogRefreshAllVol(virStoragePoolOb= jPtr pool) ret =3D 0; =20 cleanup: - virCommandFree(cmd); VIR_FREE(output); return ret; } @@ -183,7 +183,7 @@ virStorageBackendSheepdogRefreshPool(virStoragePoolObjP= tr pool) { int ret =3D -1; char *output =3D NULL; - virCommandPtr cmd; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 cmd =3D virCommandNewArgList(SHEEPDOGCLI, "node", "info", "-r", NULL); virStorageBackendSheepdogAddHostArg(cmd, pool); @@ -197,7 +197,6 @@ virStorageBackendSheepdogRefreshPool(virStoragePoolObjP= tr pool) =20 ret =3D virStorageBackendSheepdogRefreshAllVol(pool); cleanup: - virCommandFree(cmd); VIR_FREE(output); return ret; } @@ -208,14 +207,12 @@ virStorageBackendSheepdogDeleteVol(virStoragePoolObjP= tr pool, virStorageVolDefPtr vol, unsigned int flags) { + VIR_AUTOPTR(virCommand) cmd =3D NULL; virCheckFlags(0, -1); =20 - virCommandPtr cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "delete= ", vol->name, NULL); + cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "delete", vol->name, = NULL); virStorageBackendSheepdogAddHostArg(cmd, pool); - int ret =3D virCommandRun(cmd, NULL); - - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 =20 @@ -252,27 +249,20 @@ virStorageBackendSheepdogBuildVol(virStoragePoolObjPt= r pool, virStorageVolDefPtr vol, unsigned int flags) { - int ret =3D -1; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 virCheckFlags(0, -1); =20 if (!vol->target.capacity) { virReportError(VIR_ERR_NO_SUPPORT, "%s", _("volume capacity required for this pool")); - goto cleanup; + return -1; } =20 cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "create", vol->name, = NULL); virCommandAddArgFormat(cmd, "%llu", vol->target.capacity); virStorageBackendSheepdogAddHostArg(cmd, pool); - if (virCommandRun(cmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 =20 @@ -344,30 +334,30 @@ virStorageBackendSheepdogRefreshVol(virStoragePoolObj= Ptr pool, int ret; char *output =3D NULL; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "list",= vol->name, "-r", NULL); + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 + cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "list", vol->name, "-= r", NULL); virStorageBackendSheepdogAddHostArg(cmd, pool); virCommandSetOutputBuffer(cmd, &output); ret =3D virCommandRun(cmd, NULL); =20 if (ret < 0) - goto cleanup; + return ret; =20 if ((ret =3D virStorageBackendSheepdogParseVdiList(vol, output)) < 0) - goto cleanup; + return ret; =20 vol->type =3D VIR_STORAGE_VOL_NETWORK; =20 VIR_FREE(vol->key); if (virAsprintf(&vol->key, "%s/%s", def->source.name, vol->name) < 0) - goto cleanup; + return -1; =20 VIR_FREE(vol->target.path); ignore_value(VIR_STRDUP(vol->target.path, vol->name)); - cleanup: - virCommandFree(cmd); - return ret; + + return 0; } =20 =20 @@ -377,15 +367,13 @@ virStorageBackendSheepdogResizeVol(virStoragePoolObjP= tr pool, unsigned long long capacity, unsigned int flags) { + VIR_AUTOPTR(virCommand) cmd =3D NULL; virCheckFlags(0, -1); =20 - virCommandPtr cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "resize= ", vol->name, NULL); + cmd =3D virCommandNewArgList(SHEEPDOGCLI, "vdi", "resize", vol->name, = NULL); virCommandAddArgFormat(cmd, "%llu", capacity); virStorageBackendSheepdogAddHostArg(cmd, pool); - int ret =3D virCommandRun(cmd, NULL); - - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 =20 diff --git a/src/storage/storage_backend_vstorage.c b/src/storage/storage_b= ackend_vstorage.c index 0a9abd446b..e62234fd70 100644 --- a/src/storage/storage_backend_vstorage.c +++ b/src/storage/storage_backend_vstorage.c @@ -39,7 +39,7 @@ virStorageBackendVzPoolStart(virStoragePoolObjPtr pool) { int ret =3D -1; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; char *grp_name =3D NULL; char *usr_name =3D NULL; char *mode =3D NULL; @@ -75,7 +75,6 @@ virStorageBackendVzPoolStart(virStoragePoolObjPtr pool) ret =3D 0; =20 cleanup: - virCommandFree(cmd); VIR_FREE(mode); VIR_FREE(grp_name); VIR_FREE(usr_name); @@ -125,8 +124,7 @@ static int virStorageBackendVzPoolStop(virStoragePoolObjPtr pool) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; - int ret =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; int rc; =20 /* Short-circuit if already unmounted */ @@ -134,13 +132,7 @@ virStorageBackendVzPoolStop(virStoragePoolObjPtr pool) return rc; =20 cmd =3D virCommandNewArgList(UMOUNT, def->target.path, NULL); - if (virCommandRun(cmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 =20 diff --git a/src/storage/storage_backend_zfs.c b/src/storage/storage_backen= d_zfs.c index f728477c2a..55f8a138cf 100644 --- a/src/storage/storage_backend_zfs.c +++ b/src/storage/storage_backend_zfs.c @@ -51,7 +51,7 @@ VIR_LOG_INIT("storage.storage_backend_zfs"); static int virStorageBackendZFSVolModeNeeded(void) { - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; int ret =3D -1, exit_code =3D -1; char *error =3D NULL; =20 @@ -77,7 +77,6 @@ virStorageBackendZFSVolModeNeeded(void) ret =3D 0; =20 cleanup: - virCommandFree(cmd); VIR_FREE(error); return ret; } @@ -179,7 +178,7 @@ virStorageBackendZFSFindVols(virStoragePoolObjPtr pool, virStorageVolDefPtr vol) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; char *volumes_list =3D NULL; VIR_AUTOPTR(virString) lines =3D NULL; size_t i; @@ -218,7 +217,6 @@ virStorageBackendZFSFindVols(virStoragePoolObjPtr pool, } =20 cleanup: - virCommandFree(cmd); VIR_FREE(volumes_list); =20 return 0; @@ -228,8 +226,8 @@ static int virStorageBackendZFSRefreshPool(virStoragePoolObjPtr pool ATTRIBUTE_UNUSED) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; char *zpool_props =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; VIR_AUTOPTR(virString) lines =3D NULL; VIR_AUTOPTR(virString) tokens =3D NULL; size_t i; @@ -292,7 +290,6 @@ virStorageBackendZFSRefreshPool(virStoragePoolObjPtr po= ol ATTRIBUTE_UNUSED) goto cleanup; =20 cleanup: - virCommandFree(cmd); VIR_FREE(zpool_props); =20 return 0; @@ -303,7 +300,7 @@ virStorageBackendZFSCreateVol(virStoragePoolObjPtr pool, virStorageVolDefPtr vol) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; int ret =3D -1; int volmode_needed =3D -1; =20 @@ -364,7 +361,6 @@ virStorageBackendZFSCreateVol(virStoragePoolObjPtr pool, =20 ret =3D 0; cleanup: - virCommandFree(cmd); return ret; =20 } @@ -374,9 +370,8 @@ virStorageBackendZFSDeleteVol(virStoragePoolObjPtr pool, virStorageVolDefPtr vol, unsigned int flags) { - int ret =3D -1; virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr destroy_cmd =3D NULL; + VIR_AUTOPTR(virCommand) destroy_cmd =3D NULL; =20 virCheckFlags(0, -1); =20 @@ -385,13 +380,7 @@ virStorageBackendZFSDeleteVol(virStoragePoolObjPtr poo= l, virCommandAddArgFormat(destroy_cmd, "%s/%s", def->source.name, vol->name); =20 - if (virCommandRun(destroy_cmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - virCommandFree(destroy_cmd); - return ret; + return virCommandRun(destroy_cmd, NULL); } =20 static int @@ -399,9 +388,8 @@ virStorageBackendZFSBuildPool(virStoragePoolObjPtr pool, unsigned int flags) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; size_t i; - int ret =3D -1; =20 virCheckFlags(0, -1); =20 @@ -417,14 +405,7 @@ virStorageBackendZFSBuildPool(virStoragePoolObjPtr poo= l, for (i =3D 0; i < def->source.ndevice; i++) virCommandAddArg(cmd, def->source.devices[i].path); =20 - if (virCommandRun(cmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 static int @@ -432,22 +413,14 @@ virStorageBackendZFSDeletePool(virStoragePoolObjPtr p= ool, unsigned int flags) { virStoragePoolDefPtr def =3D virStoragePoolObjGetDef(pool); - virCommandPtr cmd =3D NULL; - int ret =3D -1; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 virCheckFlags(0, -1); =20 cmd =3D virCommandNewArgList(ZPOOL, "destroy", def->source.name, NULL); =20 - if (virCommandRun(cmd, NULL) < 0) - goto cleanup; - - ret =3D 0; - - cleanup: - virCommandFree(cmd); - return ret; + return virCommandRun(cmd, NULL); } =20 virStorageBackend virStorageBackendZFS =3D { diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index dcdd52bbbf..7c377439dc 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -2207,7 +2207,7 @@ static int virStorageBackendPloopRestoreDesc(char *path) { int ret =3D -1; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; char *refresh_tool =3D NULL; char *desc =3D NULL; =20 @@ -2238,7 +2238,6 @@ virStorageBackendPloopRestoreDesc(char *path) =20 cleanup: VIR_FREE(refresh_tool); - virCommandFree(cmd); VIR_FREE(desc); return ret; } diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index 158cf3adb6..b9dbd3048a 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -617,7 +617,7 @@ storageBackendCreatePloop(virStoragePoolObjPtr pool ATT= RIBUTE_UNUSED, unsigned int flags) { int ret =3D -1; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; char *create_tool =3D NULL; bool created =3D false; =20 @@ -677,7 +677,6 @@ storageBackendCreatePloop(virStoragePoolObjPtr pool ATT= RIBUTE_UNUSED, created =3D true; ret =3D virCommandRun(cmd, NULL); cleanup: - virCommandFree(cmd); VIR_FREE(create_tool); if (ret < 0 && created) virFileDeleteTree(vol->target.path); @@ -690,7 +689,7 @@ storagePloopResize(virStorageVolDefPtr vol, unsigned long long capacity) { int ret =3D -1; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; char *resize_tool =3D NULL; =20 resize_tool =3D virFindFileInPath("ploop"); @@ -705,7 +704,6 @@ storagePloopResize(virStorageVolDefPtr vol, virCommandAddArgFormat(cmd, "%s/DiskDescriptor.xml", vol->target.path); =20 ret =3D virCommandRun(cmd, NULL); - virCommandFree(cmd); VIR_FREE(resize_tool); return ret; } @@ -1319,8 +1317,7 @@ storageBackendDoCreateQemuImg(virStoragePoolObjPtr po= ol, const char *inputSecretPath, virStorageVolEncryptConvertStep convertStep) { - int ret; - virCommandPtr cmd; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 cmd =3D virStorageBackendCreateQemuImgCmdFromVol(pool, vol, inputvol, flags, create_tool, @@ -1329,11 +1326,7 @@ storageBackendDoCreateQemuImg(virStoragePoolObjPtr p= ool, if (!cmd) return -1; =20 - ret =3D virStorageBackendCreateExecCommand(pool, vol, cmd); - - virCommandFree(cmd); - - return ret; + return virStorageBackendCreateExecCommand(pool, vol, cmd); } =20 =20 @@ -2324,7 +2317,7 @@ storageBackendResizeQemuImg(virStoragePoolObjPtr pool, { int ret =3D -1; char *img_tool =3D NULL; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; const char *type; char *secretPath =3D NULL; char *secretAlias =3D NULL; @@ -2395,7 +2388,6 @@ storageBackendResizeQemuImg(virStoragePoolObjPtr pool, VIR_FREE(secretPath); } VIR_FREE(secretAlias); - virCommandFree(cmd); return ret; } =20 @@ -2449,7 +2441,7 @@ virStorageBackendVolResizeLocal(virStoragePoolObjPtr = pool, static int storageBackendPloopHasSnapshots(char *path) { - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; char *output =3D NULL; char *snap_tool =3D NULL; int ret =3D -1; @@ -2477,7 +2469,6 @@ storageBackendPloopHasSnapshots(char *path) =20 cleanup: VIR_FREE(output); - virCommandFree(cmd); return ret; } =20 @@ -2685,7 +2676,7 @@ storageBackendVolWipeLocalFile(const char *path, int ret =3D -1, fd =3D -1; const char *alg_char =3D NULL; struct stat st; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; =20 fd =3D open(path, O_RDWR); if (fd =3D=3D -1) { @@ -2763,7 +2754,6 @@ storageBackendVolWipeLocalFile(const char *path, } =20 cleanup: - virCommandFree(cmd); VIR_FORCE_CLOSE(fd); return ret; } @@ -2773,7 +2763,7 @@ static int storageBackendVolWipePloop(virStorageVolDefPtr vol, unsigned int algorithm) { - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; char *target_path =3D NULL; char *disk_desc =3D NULL; char *create_tool =3D NULL; @@ -2820,7 +2810,6 @@ storageBackendVolWipePloop(virStorageVolDefPtr vol, VIR_FREE(disk_desc); VIR_FREE(target_path); VIR_FREE(create_tool); - virCommandFree(cmd); return ret; } =20 @@ -3034,7 +3023,7 @@ virStorageBackendFindGlusterPoolSources(const char *h= ost, { char *glusterpath =3D NULL; char *outbuf =3D NULL; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; int rc; =20 int ret =3D -1; @@ -3069,7 +3058,6 @@ virStorageBackendFindGlusterPoolSources(const char *h= ost, =20 cleanup: VIR_FREE(outbuf); - virCommandFree(cmd); VIR_FREE(glusterpath); return ret; } @@ -3309,12 +3297,13 @@ virStorageBackendPARTEDFindLabel(const char *device, const char *const args[] =3D { device, "print", "--script", NULL, }; - virCommandPtr cmd =3D virCommandNew(PARTED); + VIR_AUTOPTR(virCommand) cmd =3D NULL; char *output =3D NULL; char *error =3D NULL; char *start, *end; int ret =3D VIR_STORAGE_PARTED_ERROR; =20 + cmd =3D virCommandNew(PARTED); virCommandAddArgSet(cmd, args); virCommandAddEnvString(cmd, "LC_ALL=3DC"); virCommandSetOutputBuffer(cmd, &output); @@ -3359,7 +3348,6 @@ virStorageBackendPARTEDFindLabel(const char *device, ret =3D VIR_STORAGE_PARTED_DIFFERENT; =20 cleanup: - virCommandFree(cmd); VIR_FREE(output); VIR_FREE(error); return ret; diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index cd2437a03e..2e5c64e034 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -1376,13 +1376,14 @@ int virStorageFileGetLVMKey(const char *path, * 06UgP5-2rhb-w3Bo-3mdR-WeoL-pytO-SAa2ky */ int status; - virCommandPtr cmd =3D virCommandNewArgList(LVS, "--noheadings", - "--unbuffered", "--nosuffix", - "--options", "uuid", path, - NULL - ); + VIR_AUTOPTR(virCommand) cmd =3D NULL; int ret =3D -1; =20 + cmd =3D virCommandNewArgList(LVS, "--noheadings", + "--unbuffered", "--nosuffix", + "--options", "uuid", path, + NULL + ); *key =3D NULL; =20 /* Run the program and capture its output */ @@ -1417,8 +1418,6 @@ int virStorageFileGetLVMKey(const char *path, if (*key && STREQ(*key, "")) VIR_FREE(*key); =20 - virCommandFree(cmd); - return ret; } #else @@ -1451,20 +1450,20 @@ virStorageFileGetSCSIKey(const char *path, bool ignoreError ATTRIBUTE_UNUSED) { int status; - virCommandPtr cmd =3D virCommandNewArgList("/lib/udev/scsi_id", - "--replace-whitespace", - "--whitelisted", - "--device", path, - NULL - ); - int ret =3D -2; - + VIR_AUTOPTR(virCommand) cmd =3D NULL; + + cmd =3D virCommandNewArgList("/lib/udev/scsi_id", + "--replace-whitespace", + "--whitelisted", + "--device", path, + NULL + ); *key =3D NULL; =20 /* Run the program and capture its output */ virCommandSetOutputBuffer(cmd, key); if (virCommandRun(cmd, &status) < 0) - goto cleanup; + return -2; =20 /* Explicitly check status =3D=3D 0, rather than passing NULL * to virCommandRun because we don't want to raise an actual @@ -1476,15 +1475,10 @@ virStorageFileGetSCSIKey(const char *path, *nl =3D '\0'; } =20 - ret =3D 0; - - cleanup: if (*key && STREQ(*key, "")) VIR_FREE(*key); =20 - virCommandFree(cmd); - - return ret; + return 0; } #else int virStorageFileGetSCSIKey(const char *path, @@ -1522,23 +1516,23 @@ virStorageFileGetNPIVKey(const char *path, { int status; VIR_AUTOFREE(char *) outbuf =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; const char *serial; const char *port; - virCommandPtr cmd =3D virCommandNewArgList("/lib/udev/scsi_id", - "--replace-whitespace", - "--whitelisted", - "--export", - "--device", path, - NULL - ); - int ret =3D -2; =20 + cmd =3D virCommandNewArgList("/lib/udev/scsi_id", + "--replace-whitespace", + "--whitelisted", + "--export", + "--device", path, + NULL + ); *key =3D NULL; =20 /* Run the program and capture its output */ virCommandSetOutputBuffer(cmd, &outbuf); if (virCommandRun(cmd, &status) < 0) - goto cleanup; + return -2; =20 /* Explicitly check status =3D=3D 0, rather than passing NULL * to virCommandRun because we don't want to raise an actual @@ -1562,12 +1556,7 @@ virStorageFileGetNPIVKey(const char *path, ignore_value(virAsprintf(key, "%s_PORT%s", serial, port)); } =20 - ret =3D 0; - - cleanup: - virCommandFree(cmd); - - return ret; + return 0; } #else int virStorageFileGetNPIVKey(const char *path ATTRIBUTE_UNUSED, diff --git a/tests/storagepoolxml2argvtest.c b/tests/storagepoolxml2argvtes= t.c index 2dd87ab731..116a75c3ea 100644 --- a/tests/storagepoolxml2argvtest.c +++ b/tests/storagepoolxml2argvtest.c @@ -25,9 +25,9 @@ testCompareXMLToArgvFiles(bool shouldFail, VIR_AUTOFREE(char *) actualCmdline =3D NULL; VIR_AUTOFREE(char *) src =3D NULL; VIR_AUTOPTR(virStoragePoolDef) def =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; int defType; int ret =3D -1; - virCommandPtr cmd =3D NULL; virStoragePoolObjPtr pool =3D NULL; virStoragePoolDefPtr objDef; =20 @@ -88,7 +88,6 @@ testCompareXMLToArgvFiles(bool shouldFail, ret =3D 0; =20 cleanup: - virCommandFree(cmd); VIR_FREE(actualCmdline); virStoragePoolObjEndAPI(&pool); if (shouldFail) { diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index 2acbf567ca..38bb2ae004 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -45,9 +45,7 @@ testCompareXMLToArgvFiles(bool shouldFail, char *actualCmdline =3D NULL; virStorageVolEncryptConvertStep convertStep =3D VIR_STORAGE_VOL_ENCRYP= T_NONE; int ret =3D -1; - - virCommandPtr cmd =3D NULL; - + VIR_AUTOPTR(virCommand) cmd =3D NULL; VIR_AUTOPTR(virStorageVolDef) vol =3D NULL; VIR_AUTOPTR(virStorageVolDef) inputvol =3D NULL; VIR_AUTOPTR(virStoragePoolDef) inputpool =3D NULL; @@ -91,6 +89,7 @@ testCompareXMLToArgvFiles(bool shouldFail, convertStep =3D VIR_STORAGE_VOL_ENCRYPT_CREATE; =20 do { + virCommandFree(cmd); cmd =3D virStorageBackendCreateQemuImgCmdFromVol(obj, vol, inputvol, flags, create_tool, @@ -140,7 +139,6 @@ testCompareXMLToArgvFiles(bool shouldFail, ret =3D 0; =20 cleanup: - virCommandFree(cmd); VIR_FREE(actualCmdline); virStoragePoolObjEndAPI(&obj); return ret; diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c index c7c40b16f8..c448d8b733 100644 --- a/tests/virstoragetest.c +++ b/tests/virstoragetest.c @@ -128,7 +128,7 @@ static int testPrepImages(void) { int ret =3D EXIT_FAILURE; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; char *buf =3D NULL; bool compat =3D false; =20 @@ -246,7 +246,6 @@ testPrepImages(void) ret =3D 0; cleanup: VIR_FREE(buf); - virCommandFree(cmd); if (ret) testCleanupImages(); return ret; @@ -713,7 +712,7 @@ static int mymain(void) { int ret; - virCommandPtr cmd =3D NULL; + VIR_AUTOPTR(virCommand) cmd =3D NULL; struct testChainData data; struct testLookupData data2; struct testPathCanonicalizeData data3; @@ -1604,7 +1603,6 @@ mymain(void) /* Final cleanup */ virStorageSourceFree(chain); testCleanupImages(); - virCommandFree(cmd); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } --=20 2.20.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list