[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCH] storage: Fix memory leak in error path



This also renames cleanup label as error since it is only used for error
path rather then being common for both success and error paths.
---
 src/storage/storage_backend_logical.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/storage/storage_backend_logical.c b/src/storage/storage_backend_logical.c
index bb709df..e3b3de4 100644
--- a/src/storage/storage_backend_logical.c
+++ b/src/storage/storage_backend_logical.c
@@ -741,10 +741,10 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
         virCommandAddArg(cmd, pool->def->source.name);
 
     if (virCommandRun(cmd, NULL) < 0)
-        goto cleanup;
+        goto error;
 
     if ((fdret = virStorageBackendVolOpen(vol->target.path)) < 0)
-        goto cleanup;
+        goto error;
     fd = fdret;
 
     /* We can only chown/grp if root */
@@ -753,21 +753,21 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
             virReportSystemError(errno,
                                  _("cannot set file owner '%s'"),
                                  vol->target.path);
-            goto cleanup;
+            goto error;
         }
     }
     if (fchmod(fd, vol->target.perms.mode) < 0) {
         virReportSystemError(errno,
                              _("cannot set file mode '%s'"),
                              vol->target.path);
-        goto cleanup;
+        goto error;
     }
 
     if (VIR_CLOSE(fd) < 0) {
         virReportSystemError(errno,
                              _("cannot close file '%s'"),
                              vol->target.path);
-        goto cleanup;
+        goto error;
     }
     fd = -1;
 
@@ -776,17 +776,18 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
         virReportSystemError(errno,
                              _("cannot find newly created volume '%s'"),
                              vol->target.path);
-        goto cleanup;
+        goto error;
     }
 
     return 0;
 
- cleanup:
+ error:
     err = virSaveLastError();
     VIR_FORCE_CLOSE(fd);
     virStorageBackendLogicalDeleteVol(conn, pool, vol, 0);
     virCommandFree(cmd);
     virSetError(err);
+    virFreeError(err);
     return -1;
 }
 
-- 
1.8.1.5


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]