mm: fix madivse_pageout mishandling on non-LRU page
Subsystems (3)
PATCH 1/1 mm: fix madivse_pageout mishandling on non-LRU page
MADV_PAGEOUT tries to isolate non-LRU pages and get the warning from isolate_lru_page below.
Fix it with checking PageLRU in advance.
------------[ cut here ]------------ trying to isolate tail page WARNING: CPU: 0 PID: 6175 at mm/folio-compat.c:158 isolate_lru_page+0x130/0x140 Modules linked in: CPU: 0 PID: 6175 Comm: syz-executor.0 Not tainted 5.18.12 #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014 RIP: 0010:isolate_lru_page+0x130/0x140
Reported-by 韩天硕 <[email protected]>
Suggested-by Yang Shi <[email protected]>
Fixes 1a4e58cce84e ("mm: introduce MADV_PAGEOUT")
Signed-off-by Minchan Kim <[email protected]>
Acked-by Yang Shi <[email protected]>
--- mm/madvise.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
mm/madvise.c +5 -2
@@ -452,8 +452,11 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,continue ; } -/* Do not interfere with other mappings of this page */ -if (page_mapcount (page) !=1 ) +/* +* Do not interfere with other mappings of this page and +* non-LRU page. +*/ +if (!PageLRU (page) ||page_mapcount (page) !=1 )continue ;VM_BUG_ON_PAGE (PageTransCompound (page), page);
Signature · 1 line
2.37.2.672.g94769d06f0-goog