diff options
Diffstat (limited to 'mm/vmscan.c')
-rw-r--r-- | mm/vmscan.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index 5393b093a87b..73ba4046ed27 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -689,6 +689,11 @@ redo: | |||
689 | list_for_each_entry_safe(page, page2, l, lru) { | 689 | list_for_each_entry_safe(page, page2, l, lru) { |
690 | cond_resched(); | 690 | cond_resched(); |
691 | 691 | ||
692 | if (page_count(page) == 1) { | ||
693 | /* page was freed from under us. So we are done. */ | ||
694 | move_to_lru(page); | ||
695 | continue; | ||
696 | } | ||
692 | /* | 697 | /* |
693 | * Skip locked pages during the first two passes to give the | 698 | * Skip locked pages during the first two passes to give the |
694 | * functions holding the lock time to release the page. Later we | 699 | * functions holding the lock time to release the page. Later we |