diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index cd9aab9329fdec00cddf04de904ab36c97aeb45c..2bf094a587cb8ff2efb7e1bcabe6f40cd7b52602 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -5914,7 +5914,7 @@ static int check_reshape(struct mddev *mddev)
 		return 0; /* nothing to do */
 	if (has_failed(conf))
 		return -EINVAL;
-	if (mddev->delta_disks < 0) {
+	if (mddev->delta_disks < 0 && mddev->reshape_position == MaxSector) {
 		/* We might be able to shrink, but the devices must
 		 * be made bigger first.
 		 * For raid6, 4 is the minimum size.