From: Dan Williams Date: Sat, 12 Dec 2009 20:57:25 +0000 (-0700) Subject: imsm: fix thunderdome segfault X-Git-Tag: mdadm-3.1.2~64^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ecf408e9149dbd6ef61fdcbc92c5816c0eb7fc84;p=thirdparty%2Fmdadm.git imsm: fix thunderdome segfault disk_list_get() can return NULL if: 1/ A formerly missing disk is re-added 2/ The original array has not been rebuilt, so the family number of the missing disk still matches 3/ The metadata record of the in-sync disks are read before the missing disk This will result in the missing disk not adding its own serial number to the disk_list, only its truncated value will be present. Signed-off-by: Dan Williams --- diff --git a/super-intel.c b/super-intel.c index 39a29857..2d5796fe 100644 --- a/super-intel.c +++ b/super-intel.c @@ -2429,7 +2429,7 @@ imsm_thunderdome(struct intel_super **super_list, int len) struct intel_disk *idisk; idisk = disk_list_get(dl->serial, disk_list); - if (is_spare(&idisk->disk) && + if (idisk && is_spare(&idisk->disk) && !is_failed(&idisk->disk) && !is_configured(&idisk->disk)) dl->index = -1; else {