[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <bd28ebcf-4d42-7184-8189-ffed6fe7d4dc@google.com>
Date: Sat, 26 Feb 2022 18:25:15 -0800 (PST)
From: Hugh Dickins <hughd@...gle.com>
To: Matthew Wilcox <willy@...radead.org>
cc: Andrew Morton <akpm@...ux-foundation.org>,
linux-kernel@...r.kernel.org, linux-mm@...ck.org
Subject: [PATCH next] mm/migrate: fix remove_migration_pte() of hugetlb
entry
The foliation of remove_migration_pte() is currently wrong on hugetlb
anon entries, causing LTP move_pages12 to crash on BUG_ON(!PageLocked)
in hugepage_add_anon_rmap().
Fixes: b4010e88f071 ("mm/migrate: Convert remove_migration_ptes() to folios")
Signed-off-by: Hugh Dickins <hughd@...gle.com>
---
Please just fold in if you agree.
mm/migrate.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- mmotm/mm/migrate.c
+++ linux/mm/migrate.c
@@ -182,7 +182,8 @@ static bool remove_migration_pte(struct
struct page *new;
unsigned long idx = 0;
- if (!folio_test_ksm(folio))
+ /* Skip call in common case, plus .pgoff is invalid for KSM */
+ if (pvmw.nr_pages != 1 && !folio_test_hugetlb(folio))
idx = linear_page_index(vma, pvmw.address) - pvmw.pgoff;
new = folio_page(folio, idx);
Powered by blists - more mailing lists