fix segfaults in Detail()

If disk has been removed, 'st' and 'info' can be NULL. It causes segfault.
'st' and 'info' should be checked against being NULL before being used.

Signed-off-by: Lukasz Dorau <lukasz.dorau@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Lukasz Dorau 2012-09-20 11:06:25 +10:00 committed by NeilBrown
parent 8a63c73123
commit db428d7a24
1 changed files with 3 additions and 2 deletions

View File

@ -430,7 +430,7 @@ int Detail(char *dev, struct context *c)
}
free_mdstat(ms);
if (st->sb && info->reshape_active) {
if ((st && st->sb) && (info && info->reshape_active)) {
#if 0
This is pretty boring
printf(" Reshape pos'n : %llu%s\n", (unsigned long long) info->reshape_progress<<9,
@ -596,7 +596,8 @@ This is pretty boring
if (spares && c->brief && array.raid_disks) printf(" spares=%d", spares);
if (c->brief && st && st->sb)
st->ss->brief_detail_super(st);
st->ss->free_super(st);
if (st)
st->ss->free_super(st);
if (c->brief > 1 && devices) printf("\n devices=%s", devices);
if (c->brief)