Commit 5b40dc780ed996162f3af8712eb03beb24dcdbef

Authored by Christoph Lameter
Committed by Linus Torvalds
1 parent 8ba32fde2c

[PATCH] fix race in pagevec_strip?

We can call try_to_release_page() with PagePrivate off and a valid
page->mapping This may cause all sorts of trouble for the filesystem
*_releasepage() handlers.  XFS bombs out in that case.

Lock the page before checking for page private.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

Showing 1 changed file with 2 additions and 1 deletions Side-by-side Diff

... ... @@ -393,7 +393,8 @@
393 393 struct page *page = pvec->pages[i];
394 394  
395 395 if (PagePrivate(page) && !TestSetPageLocked(page)) {
396   - try_to_release_page(page, 0);
  396 + if (PagePrivate(page))
  397 + try_to_release_page(page, 0);
397 398 unlock_page(page);
398 399 }
399 400 }