Message ID | 20190129233217.10747-1-david@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] mm: migrate: don't rely on __PageMovable() of newpage after unlocking it | expand |
Hi, [This is an automated email] This commit has been processed because it contains a "Fixes:" tag, fixing commit: d6d86c0a7f8d mm/balloon_compaction: redesign ballooned pages management. The bot has tested the following trees: v4.20.5, v4.19.18, v4.14.96, v4.9.153, v4.4.172, v3.18.133. v4.20.5: Build OK! v4.19.18: Build OK! v4.14.96: Build OK! v4.9.153: Build OK! v4.4.172: Failed to apply! Possible dependencies: 1031bc589228 ("lib/vsprintf: add %*pg format specifier") 14e0a214d62d ("tools, perf: make gfp_compact_table up to date") 1f7866b4aebd ("mm, tracing: make show_gfp_flags() up to date") 420adbe9fc1a ("mm, tracing: unify mm flags handling in tracepoints and printk") 53f9263baba6 ("mm: rework mapcount accounting to enable 4k mapping of THPs") 7cd12b4abfd2 ("mm, page_owner: track and print last migrate reason") 7d2eba0557c1 ("mm: add tracepoint for scanning pages") c6c919eb90e0 ("mm: use put_page() to free page instead of putback_lru_page()") d435edca9288 ("mm, page_owner: copy page owner info during migration") d8c1bdeb5d6b ("page-flags: trivial cleanup for PageTrans* helpers") eca56ff906bd ("mm, shmem: add internal shmem resident memory accounting") edf14cdbf9a0 ("mm, printk: introduce new format string for flags") v3.18.133: Failed to apply! Possible dependencies: 2847cf95c68f ("mm/debug-pagealloc: cleanup page guard code") 48c96a368579 ("mm/page_owner: keep track of page owners") 7cd12b4abfd2 ("mm, page_owner: track and print last migrate reason") 94f759d62b2c ("mm/page_owner.c: remove unnecessary stack_trace field") c6c919eb90e0 ("mm: use put_page() to free page instead of putback_lru_page()") d435edca9288 ("mm, page_owner: copy page owner info during migration") e2cfc91120fa ("mm/page_owner: set correct gfp_mask on page_owner") e30825f1869a ("mm/debug-pagealloc: prepare boottime configurable on/off") eefa864b701d ("mm/page_ext: resurrect struct page extending code for debugging") How should we proceed with this patch? -- Thanks, Sasha
diff --git a/mm/migrate.c b/mm/migrate.c index 4512afab46ac..402198816d1a 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -1135,10 +1135,13 @@ static int __unmap_and_move(struct page *page, struct page *newpage, * If migration is successful, decrease refcount of the newpage * which will not free the page because new page owner increased * refcounter. As well, if it is LRU page, add the page to LRU - * list in here. + * list in here. Use the old state of the isolated source page to + * determine if we migrated a LRU page. newpage was already unlocked + * and possibly modified by its owner - don't rely on the page + * state. */ if (rc == MIGRATEPAGE_SUCCESS) { - if (unlikely(__PageMovable(newpage))) + if (unlikely(!is_lru)) put_page(newpage); else putback_lru_page(newpage);