summaryrefslogtreecommitdiffstats
path: root/super-intel.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2009-12-12 13:57:25 -0700
committerDan Williams <dan.j.williams@intel.com>2009-12-12 13:57:25 -0700
commitecf408e9149dbd6ef61fdcbc92c5816c0eb7fc84 (patch)
tree7bbcd995e62b6680e0d837a112081c244a2a4205 /super-intel.c
parentac6449bee9b40b0e8131005dc0cbe2d91a070ae2 (diff)
downloadmdadm-ecf408e9149dbd6ef61fdcbc92c5816c0eb7fc84.tar.gz
mdadm-ecf408e9149dbd6ef61fdcbc92c5816c0eb7fc84.tar.xz
mdadm-ecf408e9149dbd6ef61fdcbc92c5816c0eb7fc84.zip
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 <dan.j.williams@intel.com>
Diffstat (limited to 'super-intel.c')
-rw-r--r--super-intel.c2
1 files changed, 1 insertions, 1 deletions
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 {