From: Suparna Bhattacharya

Safeguard to make sure we break out of pagevec_lookup_tag loop if we 

diff -upN reference/fs/mpage.c current/fs/mpage.c
--- reference/fs/mpage.c	2004-05-09 13:45:20.000000000 -0700
+++ current/fs/mpage.c	2004-05-09 13:45:20.000000000 -0700
@@ -636,7 +636,8 @@ mpage_writepages(struct address_space *m
 		scanned = 1;
 	}
 retry:
-	while (!done && (nr_pages = pagevec_lookup_tag(&pvec, mapping, &index,
+	while (!done && (index <= end) && 
+			(nr_pages = pagevec_lookup_tag(&pvec, mapping, &index,
 			PAGECACHE_TAG_DIRTY,
 			min(end - index, (pgoff_t)PAGEVEC_SIZE-1) + 1))) {
 		unsigned i;
