summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Assemble.c3
-rw-r--r--Incremental.c2
-rw-r--r--bitmap.c7
3 files changed, 8 insertions, 4 deletions
diff --git a/Assemble.c b/Assemble.c
index 37a530ee..f8099cd3 100644
--- a/Assemble.c
+++ b/Assemble.c
@@ -753,6 +753,7 @@ static int load_devices(struct devs *devices, char *devmap,
tst->ss->free_super(tst);
free(tst);
*stp = st;
+ free(best);
return -1;
}
close(dfd);
@@ -834,7 +835,6 @@ static int load_devices(struct devs *devices, char *devmap,
inargv ? "the list" :
"the\n DEVICE list in mdadm.conf"
);
- free(best);
*stp = st;
goto error;
}
@@ -857,6 +857,7 @@ error:
close(mdfd);
free(devices);
free(devmap);
+ free(best);
return -1;
}
diff --git a/Incremental.c b/Incremental.c
index aa5db3bf..9b455a12 100644
--- a/Incremental.c
+++ b/Incremental.c
@@ -282,7 +282,7 @@ int Incremental(struct mddev_dev *devlist, struct context *c,
* clustering resource agents
*/
if (info.array.state & (1 << MD_SB_CLUSTERED))
- goto out;
+ goto out_unlock;
/* Couldn't find an existing array, maybe make a new one */
mdfd = create_mddev(match ? match->devname : NULL, name_to_use, trustworthy,
diff --git a/bitmap.c b/bitmap.c
index c62d18d4..3f8da63d 100644
--- a/bitmap.c
+++ b/bitmap.c
@@ -260,8 +260,11 @@ int ExamineBitmap(char *filename, int brief, struct supertype *st)
return rv;
info = bitmap_fd_read(fd, brief);
- if (!info)
+ if (!info) {
+ close_fd(&fd);
+ free(info);
return rv;
+ }
sb = &info->sb;
if (sb->magic != BITMAP_MAGIC) {
pr_err("This is an md array. To view a bitmap you need to examine\n");
@@ -336,7 +339,6 @@ int ExamineBitmap(char *filename, int brief, struct supertype *st)
printf(" Cluster name : %-64s\n", sb->cluster_name);
for (i = 0; i < (int)sb->nodes; i++) {
st = NULL;
- free(info);
fd = bitmap_file_open(filename, &st, i, fd);
if (fd < 0) {
printf(" Unable to open bitmap file on node: %i\n", i);
@@ -347,6 +349,7 @@ int ExamineBitmap(char *filename, int brief, struct supertype *st)
printf(" Unable to read bitmap on node: %i\n", i);
continue;
}
+ free(sb);
sb = &info->sb;
if (sb->magic != BITMAP_MAGIC)
pr_err("invalid bitmap magic 0x%x, the bitmap file appears to be corrupted\n", sb->magic);