diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index b437fe6257b02adb5520e377c5af045c8a397487..632b46479c940a41ccf7b9eb14360c25a0dfe323 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -927,7 +927,7 @@ int write_cache_pages(struct address_space *mapping,
 				break;
 			}
 
-			done_index = page->index + 1;
+			done_index = page->index;
 
 			lock_page(page);
 
@@ -977,6 +977,7 @@ int write_cache_pages(struct address_space *mapping,
 					 * not be suitable for data integrity
 					 * writeout).
 					 */
+					done_index = page->index + 1;
 					done = 1;
 					break;
 				}