diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index dfe7d62d3fbd..e9648d643dd1 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -2157,9 +2157,12 @@ static int raid10_remove_disk(struct mddev *mddev, struct md_rdev *rdev) int err = 0; int number = rdev->raid_disk; struct md_rdev **rdevp; - struct raid10_info *p = conf->mirrors + number; + struct raid10_info *p; print_conf(conf); + if (unlikely(number >= mddev->raid_disks)) + return 0; + p = conf->mirrors + number; if (rdev == p->rdev) rdevp = &p->rdev; else if (rdev == p->replacement)