From fa95b014fd194df77e8d1546c3ebef1d832bc105 Mon Sep 17 00:00:00 2001 From: Sukrit Bhatnagar Date: Sat, 28 Jul 2018 23:31:36 +0530 Subject: [PATCH] util: netdevveth: use VIR_AUTOPTR for aggregate types By making use of GNU C's cleanup attribute handled by the VIR_AUTOPTR macro for declaring aggregate pointer variables, majority of the calls to *Free functions can be dropped, which in turn leads to getting rid of most of our cleanup sections. Signed-off-by: Sukrit Bhatnagar Reviewed-by: Erik Skultety --- src/util/virnetdevveth.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/util/virnetdevveth.c b/src/util/virnetdevveth.c index 87d9d7c0cf..a651bb5445 100644 --- a/src/util/virnetdevveth.c +++ b/src/util/virnetdevveth.c @@ -112,7 +112,6 @@ int virNetDevVethCreate(char** veth1, char** veth2) { int ret = -1; int vethNum = 0; - virCommandPtr cmd = NULL; size_t i; /* @@ -125,6 +124,7 @@ int virNetDevVethCreate(char** veth1, char** veth2) for (i = 0; i < MAX_VETH_RETRIES; i++) { VIR_AUTOFREE(char *) veth1auto = NULL; VIR_AUTOFREE(char *) veth2auto = NULL; + VIR_AUTOPTR(virCommand) cmd = NULL; int status; if (!*veth1) { @@ -174,8 +174,6 @@ int virNetDevVethCreate(char** veth1, char** veth2) *veth1 ? *veth1 : veth1auto, *veth2 ? *veth2 : veth2auto, status); - virCommandFree(cmd); - cmd = NULL; } virReportError(VIR_ERR_INTERNAL_ERROR, @@ -184,7 +182,6 @@ int virNetDevVethCreate(char** veth1, char** veth2) cleanup: virMutexUnlock(&virNetDevVethCreateMutex); - virCommandFree(cmd); return ret; } @@ -201,26 +198,22 @@ int virNetDevVethCreate(char** veth1, char** veth2) */ int virNetDevVethDelete(const char *veth) { - virCommandPtr cmd = virCommandNewArgList("ip", "link", "del", veth, NULL); int status; - int ret = -1; + VIR_AUTOPTR(virCommand) cmd = virCommandNewArgList("ip", "link", + "del", veth, NULL); if (virCommandRun(cmd, &status) < 0) - goto cleanup; + return -1; if (status != 0) { if (!virNetDevExists(veth)) { VIR_DEBUG("Device %s already deleted (by kernel namespace cleanup)", veth); - ret = 0; - goto cleanup; + return 0; } virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to delete veth device %s"), veth); - goto cleanup; + return -1; } - ret = 0; - cleanup: - virCommandFree(cmd); - return ret; + return 0; }