diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 6b5cc3f59fb3..25be491c1a6a 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -1791,6 +1791,10 @@ static int raid1_remove_disk(struct mddev *mddev, struct md_rdev *rdev) struct r1conf *conf = mddev->private; int err = 0; int number = rdev->raid_disk; + + if (unlikely(number >= conf->raid_disks)) + goto abort; + struct raid1_info *p = conf->mirrors + number; if (rdev != p->rdev)