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;