[Crash-utility] [PATCH 01/11] sadump, bug: fix cleanup sadump resources

HATAYAMA Daisuke d.hatayama at jp.fujitsu.com
Thu Oct 20 10:42:17 UTC 2011


Fix wrongly closing file descripter for disk when failing to add
disk. To avoid this, memset it with 0 at initialization.

Also check if sd->sd_list[0] is NULL before freeing it since it could
be NULL if failing in the middle of adding disk.

Signed-off-by: HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com>
---

 sadump.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)
-------------- next part --------------
diff --git a/sadump.c b/sadump.c
index 0eef2f4..3178c4c 100644
--- a/sadump.c
+++ b/sadump.c
@@ -69,7 +69,8 @@ sadump_cleanup_sadump_data(void)
 
 	if (sd->flags & SADUMP_DISKSET) {
 		for (i = 1; i < sd->sd_list_len; ++i) {
-			close(sd->sd_list[i]->dfd);
+			if (sd->sd_list[i]->dfd)
+				close(sd->sd_list[i]->dfd);
 			free(sd->sd_list[i]->header);
 			free(sd->sd_list[i]);
 		}
@@ -83,7 +84,8 @@ sadump_cleanup_sadump_data(void)
 	free(sd->dumpable_bitmap);
 	free(sd->page_buf);
 	free(sd->block_table);
-	free(sd->sd_list[0]);
+	if (sd->sd_list[0])
+		free(sd->sd_list[0]);
 
 	memset(&sadump_data, 0, sizeof(sadump_data));
 
@@ -605,7 +607,7 @@ open_disk(char *file)
 		}
 		return FALSE;
 	}
-
+	memset(this_disk, 0, sizeof(*this_disk));
 	sd->sd_list[sd->sd_list_len - 1] = this_disk;
 
 	this_disk->dfd = open(file, O_RDONLY);


More information about the Crash-utility mailing list