[libvirt] [PATCH] eliminate possibility of a double-closed file descriptor

Stefan Berger stefanb at us.ibm.com
Thu Oct 28 11:22:52 UTC 2010


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.

Signed-off-by: Stefan Berger <stefanb at us.ibm.com>

Index: Stefan/src/storage/storage_backend_logical.c
===================================================================
--- Stefan.orig/src/storage/storage_backend_logical.c
+++ Stefan/src/storage/storage_backend_logical.c
@@ -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(virCon
             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(virCon
         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(virCon
     return 0;
 
  cleanup:
-    if (fd != -1)
-        close(fd);
+    VIR_FORCE_CLOSE(fd);
     virStorageBackendLogicalDeleteVol(conn, pool, vol, 0);
     return -1;
 }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20101028/dc25ba0e/attachment-0001.htm>


More information about the libvir-list mailing list