]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
mdadm: fix use-after-free after free_mdstat
authorZhipeng Xie <xiezhipeng1@huawei.com>
Tue, 10 Apr 2018 01:25:39 +0000 (09:25 +0800)
committerJes Sorensen <jsorensen@fb.com>
Tue, 10 Apr 2018 15:12:24 +0000 (11:12 -0400)
e->percent access the mdstat_ent which was already freed in free_mdstat

Signed-off-by: Zhipeng Xie <xiezhipeng1@huawei.com>
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
Detail.c

index 4dcf81ddba73200aff32221b2b7c500d83eb2672..860241ce201717e70d4fa1f68f9d6a8fe66bb5b3 100644 (file)
--- a/Detail.c
+++ b/Detail.c
@@ -561,7 +561,6 @@ int Detail(char *dev, struct context *c)
                        printf("    %7s Status : %d%% complete\n",
                               sync_action[e->resync], e->percent);
                }
-               free_mdstat(ms);
 
                if ((st && st->sb) && (info && info->reshape_active)) {
 #if 0
@@ -609,6 +608,8 @@ This is pretty boring
                        printf("\n");
                } else if (e && e->percent >= 0)
                        printf("\n");
+               free_mdstat(ms);
+
                if (st && st->sb)
                        st->ss->detail_super(st, c->homehost);