The quilt patch titled Subject: mm-fix-is_pinnable_page-against-on-cma-page-v5 has been removed from the -mm tree. Its filename was mm-fix-is_pinnable_page-against-on-cma-page-v5.patch This patch was dropped because it was folded into mm-fix-is_pinnable_page-against-on-cma-page.patch ------------------------------------------------------ From: Minchan Kim <minchan@xxxxxxxxxx> Subject: mm-fix-is_pinnable_page-against-on-cma-page-v5 * clarification why we need READ_ONCE - Paul * Add a comment about READ_ONCE - John Link: https://lkml.kernel.org/r/20220512204143.3961150-1-minchan@xxxxxxxxxx Signed-off-by: Minchan Kim <minchan@xxxxxxxxxx> Cc: "Paul E . McKenney" <paulmck@xxxxxxxxxx> Cc: John Hubbard <jhubbard@xxxxxxxxxx> Cc: David Hildenbrand <david@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/mm.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) --- a/include/linux/mm.h~mm-fix-is_pinnable_page-against-on-cma-page-v5 +++ a/include/linux/mm.h @@ -1627,13 +1627,14 @@ static inline bool is_pinnable_page(stru { #ifdef CONFIG_CMA /* - * use volatile to use local variable mt instead of - * refetching mt value. + * Defend against future compiler LTO features, or code refactoring + * that inlines the above function, by forcing a single read. Because, + * this routine races with set_pageblock_migratetype(), and we want to + * avoid reading zero, when actually one or the other flags was set. */ - int __mt = get_pageblock_migratetype(page); int mt = __READ_ONCE(__mt); - if (mt == MIGRATE_CMA || mt == MIGRATE_ISOLATE) + if (mt & (MIGRATE_CMA | MIGRATE_ISOLATE)) return false; #endif _ Patches currently in -mm which might be from minchan@xxxxxxxxxx are mm-fix-is_pinnable_page-against-on-cma-page.patch mm-fix-is_pinnable_page-against-on-cma-page-v5-fix.patch mm-dont-be-stuck-to-rmap-lock-on-reclaim-path.patch