
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@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; }