diff --git a/managemon.c b/managemon.c index 2301946..c5ba2f4 100644 --- a/managemon.c +++ b/managemon.c @@ -259,6 +259,7 @@ static void manage_new(struct mdstat_ent *mdstat, new->sync_pos_fd = sysfs_open(new->devnum, NULL, "sync_completed"); new->sync_pos = 0; + sysfs_free(mdi); // finds and compares. if (container->ss->open_new(container, new, inst) < 0) { // FIXME close all those files @@ -377,6 +378,8 @@ void do_manager(struct supertype *container) read_sock(container); + free_mdstat(mdstat); + mdstat_wait_fd(container->sock); } while(1); } diff --git a/mdstat.c b/mdstat.c index c75260e..a65e7c3 100644 --- a/mdstat.c +++ b/mdstat.c @@ -95,6 +95,7 @@ void free_mdstat(struct mdstat_ent *ms) if (ms->dev) free(ms->dev); if (ms->level) free(ms->level); if (ms->pattern) free(ms->pattern); + if (ms->metadata_version) free(ms->metadata_version); t = ms; ms = ms->next; free(t);