diff options
-rw-r--r-- | Assemble.c | 3 | ||||
-rw-r--r-- | Incremental.c | 2 | ||||
-rw-r--r-- | bitmap.c | 7 |
3 files changed, 8 insertions, 4 deletions
@@ -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, @@ -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); |