From ecf408e9149dbd6ef61fdcbc92c5816c0eb7fc84 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Sat, 12 Dec 2009 13:57:25 -0700 Subject: 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 --- super-intel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'super-intel.c') diff --git a/super-intel.c b/super-intel.c index 39a2985..2d5796f 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 { -- cgit