diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 1bc6cb48467f61ff7565ae0993e2c4687f8e6a06..744b4abe2c3b0b67147374d7d7d936d2d5c5fe4c 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -1815,9 +1815,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)