]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
ddf: free_super should be add_list as well.
authorNeilBrown <neilb@suse.de>
Mon, 14 Mar 2011 07:32:38 +0000 (18:32 +1100)
committerNeilBrown <neilb@suse.de>
Mon, 14 Mar 2011 07:32:38 +0000 (18:32 +1100)
It is possible there is data and even an open file descriptor
on 'add_list' - so it must be freed too.

Signed-off-by: NeilBrown <neilb@suse.de>
super-ddf.c

index d20721586c586f890196ab8dad3f1e816fd840b3..92741dd8f8ddd9569b2059c7fd6069bb129aecd5 100644 (file)
@@ -900,6 +900,15 @@ static void free_super_ddf(struct supertype *st)
                        free(d->spare);
                free(d);
        }
+       while (ddf->add_list) {
+               struct dl *d = ddf->add_list;
+               ddf->add_list = d->next;
+               if (d->fd >= 0)
+                       close(d->fd);
+               if (d->spare)
+                       free(d->spare);
+               free(d);
+       }
        free(ddf);
        st->sb = NULL;
 }