diff --git a/mm/rmap.c b/mm/rmap.c
index 22ed3f71a67421831f12b0deffa915eacf5d1db7..b82146e6dfc9d0e12f15c7cf292893ab6ede43f3 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -498,9 +498,9 @@ int page_mkclean(struct page *page)
 		struct address_space *mapping = page_mapping(page);
 		if (mapping)
 			ret = page_mkclean_file(mapping, page);
+		if (page_test_and_clear_dirty(page))
+			ret = 1;
 	}
-	if (page_test_and_clear_dirty(page))
-		ret = 1;
 
 	return ret;
 }