From: Zhipeng Xie Date: Tue, 10 Apr 2018 01:25:39 +0000 (+0800) Subject: mdadm: fix use-after-free after free_mdstat X-Git-Tag: mdadm-4.1-rc2~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c7c65a3e5d3e5f6d32bfa4cf0d872f87c654eb2;p=thirdparty%2Fmdadm.git mdadm: fix use-after-free after free_mdstat e->percent access the mdstat_ent which was already freed in free_mdstat Signed-off-by: Zhipeng Xie Signed-off-by: Jes Sorensen --- diff --git a/Detail.c b/Detail.c index 4dcf81dd..860241ce 100644 --- 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);