diff options
Diffstat (limited to 'mm/vmscan.c')
-rw-r--r-- | mm/vmscan.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index 3886b0bd7869..f51a33e8ed89 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -633,13 +633,14 @@ redo: | |||
633 | lru = LRU_UNEVICTABLE; | 633 | lru = LRU_UNEVICTABLE; |
634 | add_page_to_unevictable_list(page); | 634 | add_page_to_unevictable_list(page); |
635 | /* | 635 | /* |
636 | * When racing with an mlock clearing (page is | 636 | * When racing with an mlock or AS_UNEVICTABLE clearing |
637 | * unlocked), make sure that if the other thread does | 637 | * (page is unlocked) make sure that if the other thread |
638 | * not observe our setting of PG_lru and fails | 638 | * does not observe our setting of PG_lru and fails |
639 | * isolation, we see PG_mlocked cleared below and move | 639 | * isolation/check_move_unevictable_page, |
640 | * we see PG_mlocked/AS_UNEVICTABLE cleared below and move | ||
640 | * the page back to the evictable list. | 641 | * the page back to the evictable list. |
641 | * | 642 | * |
642 | * The other side is TestClearPageMlocked(). | 643 | * The other side is TestClearPageMlocked() or shmem_lock(). |
643 | */ | 644 | */ |
644 | smp_mb(); | 645 | smp_mb(); |
645 | } | 646 | } |