From 37424f132cb3874fe51021b1b5e04445a3ba1bdb Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Fri, 31 Jul 2009 17:11:41 -0700 Subject: fix examine_brief segfault When performing an "-Ebs -e " we segfault because the superblock has been freed too early. We also leak memory for 'ddf' and 'imsm' because, unlike super[01], we do not implicitly free when ->load_super is called on an already loaded supertype. So, fix up imsm and ddf to match type 0 and 1 ->load_super() semantics, and update Examine to not free the superblock until all usages have been exhausted. Signed-off-by: Dan Williams --- Examine.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'Examine.c') diff --git a/Examine.c b/Examine.c index f0e98f97..3d0ea8a5 100644 --- a/Examine.c +++ b/Examine.c @@ -114,10 +114,8 @@ int Examine(mddev_dev_t devlist, int brief, int export, int scan, ap->st = st; arrays = ap; st->ss->getinfo_super(st, &ap->info); - } else { + } else st->ss->getinfo_super(st, &ap->info); - st->ss->free_super(st); - } if (!(ap->info.disk.state & (1<spares++; d = dl_strdup(devlist->devname); -- cgit v1.2.3