diff --git a/drivers/md/md.c b/drivers/md/md.c
index 63ceabb4e020..a25ebf81b266 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -1774,6 +1774,10 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *rdev)
 			} else
 				set_bit(In_sync, &rdev->flags);
 			rdev->raid_disk = role;
+			if (role >= mddev->raid_disks) {
+				rdev->saved_raid_disk = -1;
+				rdev->raid_disk = -1;
+			}
 			break;
 		}
 		if (sb->devflags & WriteMostly1)