The patch titled split_lru: fix pagevec_move_tail() doesn't treat unevictable page has been removed from the -mm tree. Its filename was vmscan-split-lru-lists-into-anon-file-sets-split_lru-fix-pagevec_move_tail-doesnt-treat-unevictable-page.patch This patch was dropped because it was folded into vmscan-split-lru-lists-into-anon-file-sets.patch The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: split_lru: fix pagevec_move_tail() doesn't treat unevictable page From: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> even under writebacking, page can move to unevictable list. so shouldn't pagevec_move_tail() check unevictable? if pagevec_move_tail() doesn't PageUnevictable(), below race can occur. CPU1 CPU2 ================================================================== 1. rotate_reclaimable_page() 2. PageUnevictable(page) return 0 3. local_irq_save() 4. pagevec_move_tail() SetPageUnevictable() //mlock? move to unevictable list 5. spin_lock(&zone->lru_lock); 6. list_move_tail(); (move to inactive list) Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> Acked-by: Rik van Riel <riel@xxxxxxxxxx> Cc: Lee Schermerhorn <Lee.Schermerhorn@xxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/swap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff -puN mm/swap.c~vmscan-split-lru-lists-into-anon-file-sets-split_lru-fix-pagevec_move_tail-doesnt-treat-unevictable-page mm/swap.c --- a/mm/swap.c~vmscan-split-lru-lists-into-anon-file-sets-split_lru-fix-pagevec_move_tail-doesnt-treat-unevictable-page +++ a/mm/swap.c @@ -115,7 +115,7 @@ static void pagevec_move_tail(struct pag zone = pagezone; spin_lock(&zone->lru_lock); } - if (PageLRU(page) && !PageActive(page)) { + if (PageLRU(page) && !PageActive(page) && !PageUnevictable(page)) { int lru = page_is_file_cache(page); list_move_tail(&page->lru, &zone->lru[lru].list); pgmoved++; _ Patches currently in -mm which might be from kosaki.motohiro@xxxxxxxxxxxxxx are origin.patch vmscan-use-an-indexed-array-for-lru-variables.patch swap-use-an-array-for-the-lru-pagevecs.patch vmscan-split-lru-lists-into-anon-file-sets.patch vmscan-split-lru-lists-into-anon-file-sets-split_lru-fix-pagevec_move_tail-doesnt-treat-unevictable-page.patch vmscan-split-lru-lists-into-anon-file-sets-splitlru-memcg-swapbacked-pages-active.patch vmscan-split-lru-lists-into-anon-file-sets-splitlru-bdi_cap_swap_backed.patch vmscan-second-chance-replacement-for-anonymous-pages.patch vmscan-second-chance-replacement-for-anonymous-pages-fix.patch vmscan-second-chance-replacement-for-anonymous-pages-memcg-lru-scan-fix.patch unevictable-lru-infrastructure.patch unevictable-lru-infrastructure-fix.patch unevictable-lru-infrastructure-remove-redundant-page-mapping-check.patch unevictable-lru-infrastructure-putback_lru_page-unevictable-page-handling-rework.patch unevictable-lru-infrastructure-kill-unnecessary-lock_page-in-vmscanc.patch unevictable-lru-infrastructure-revert-migration-change-of-unevictable-lru-infrastructure.patch unevictable-lru-page-statistics.patch unevictable-lru-page-statistics-fix-printk-in-show_free_areas.patch unevictable-lru-page-statistics-units-fix.patch shm_locked-pages-are-unevictable.patch shm_locked-pages-are-unevictable-revert-shm-change-of-shm_locked-pages-are-unevictable-patch.patch mlock-mlocked-pages-are-unevictable.patch mlock-mlocked-pages-are-unevictable-fix.patch mlock-mlocked-pages-are-unevictable-fix-fix.patch mlock-mlocked-pages-are-unevictable-fix-3.patch mlock-mlocked-pages-are-unevictable-fix-fix-munlock-page-table-walk-now-requires-mm.patch mlock-mlocked-pages-are-unevictable-restore-patch-failure-hunk-of-mlock-mlocked-pages-are-unevictablepatch.patch mlock-mlocked-pages-are-unevictable-fix-truncate-race-and-sevaral-comments.patch mmap-handle-mlocked-pages-during-map-remap-unmap.patch mmap-handle-mlocked-pages-during-map-remap-unmap-cleanup.patch fix-double-unlock_page-in-2626-rc5-mm3-kernel-bug-at-mm-filemapc-575.patch introduce-__get_user_pages.patch introduce-__get_user_pages-fix.patch split-lru-munlock-rework.patch revert-to-unevictable-lru-infrastructure-kconfig-fixpatch.patch vmstat-mlocked-pages-statistics.patch vmstat-mlocked-pages-statistics-fix-incorrect-mlocked-field-of-proc-meminfo.patch vmstat-mlocked-pages-statistics-fix.patch swap-cull-unevictable-pages-in-fault-path-fix.patch vmstat-unevictable-and-mlocked-pages-vm-events.patch restore-patch-failure-of-vmstat-unevictable-and-mlocked-pages-vm-eventspatch.patch vmscan-unevictable-lru-scan-sysctl.patch vmscan-unevictable-lru-scan-sysctl-nommu-fix.patch vmscan-unevictable-lru-scan-sysctl-add-sys_device-parameter.patch vmscam-kill-unused-lru-functions.patch mm-more-likely-reclaim-madv_sequential-mappings.patch make-mm-rmapc-anon_vma_cachep-static.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html