]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
eliminate possibility of a double-closed file descriptor
authorStefan Berger <stefanb@us.ibm.com>
Thu, 28 Oct 2010 15:43:16 +0000 (11:43 -0400)
committerStefan Berger <stefanb@us.ibm.com>
Thu, 28 Oct 2010 15:43:16 +0000 (11:43 -0400)
The 2nd and 3rd hunk show the only double-closed file descriptor code part that I found while trying to clean up close(). The first hunk seems a harmless cleanup in that same file.

src/storage/storage_backend_logical.c

index 616ca1ad3eaf21832431ea0ad620d90e9d7629ae..e6c69385f8ed91a88538e6ed0918ff0609cdec9f 100644 (file)
@@ -37,6 +37,7 @@
 #include "util.h"
 #include "memory.h"
 #include "logging.h"
+#include "files.h"
 
 #define VIR_FROM_THIS VIR_FROM_STORAGE
 
@@ -408,10 +409,10 @@ virStorageBackendLogicalBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED,
             virReportSystemError(errno,
                                  _("cannot clear device header of '%s'"),
                                  pool->def->source.devices[i].path);
-            close(fd);
+            VIR_FORCE_CLOSE(fd);
             goto cleanup;
         }
-        if (close(fd) < 0) {
+        if (VIR_CLOSE(fd) < 0) {
             virReportSystemError(errno,
                                  _("cannot close device '%s'"),
                                  pool->def->source.devices[i].path);
@@ -622,7 +623,7 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
         goto cleanup;
     }
 
-    if (close(fd) < 0) {
+    if (VIR_CLOSE(fd) < 0) {
         virReportSystemError(errno,
                              _("cannot close file '%s'"),
                              vol->target.path);
@@ -641,8 +642,7 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
     return 0;
 
  cleanup:
-    if (fd != -1)
-        close(fd);
+    VIR_FORCE_CLOSE(fd);
     virStorageBackendLogicalDeleteVol(conn, pool, vol, 0);
     return -1;
 }