···1308 }1309 if (mddev->level != LEVEL_MULTIPATH) {1310 int role;1311- role = le16_to_cpu(sb->dev_roles[rdev->desc_nr]);000001312 switch(role) {1313 case 0xffff: /* spare */1314 break;
···1308 }1309 if (mddev->level != LEVEL_MULTIPATH) {1310 int role;1311+ if (rdev->desc_nr < 0 ||1312+ rdev->desc_nr >= le32_to_cpu(sb->max_dev)) {1313+ role = 0xffff;1314+ rdev->desc_nr = -1;1315+ } else1316+ role = le16_to_cpu(sb->dev_roles[rdev->desc_nr]);1317 switch(role) {1318 case 0xffff: /* spare */1319 break;