diff options
author | Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> | 2018-05-11 19:02:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-05-11 20:28:45 -0400 |
commit | 013567be19761e2d14fc2a2676fe7686ac54c9ac (patch) | |
tree | 828f9278240369148da5b784eb032d3b5b61a1cb | |
parent | 3955333df9a50e8783d115613a397ae55d905080 (diff) |
mm: migrate: fix double call of radix_tree_replace_slot()
radix_tree_replace_slot() is called twice for head page, it's obviously
a bug. Let's fix it.
Link: http://lkml.kernel.org/r/20180423072101.GA12157@hori1.linux.bs1.fc.nec.co.jp
Fixes: e71769ae5260 ("mm: enable thp migration for shmem thp")
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Reported-by: Matthew Wilcox <willy@infradead.org>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: Zi Yan <zi.yan@sent.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | mm/migrate.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/mm/migrate.c b/mm/migrate.c index 568433023831..8c0af0f7cab1 100644 --- a/mm/migrate.c +++ b/mm/migrate.c | |||
@@ -528,14 +528,12 @@ int migrate_page_move_mapping(struct address_space *mapping, | |||
528 | int i; | 528 | int i; |
529 | int index = page_index(page); | 529 | int index = page_index(page); |
530 | 530 | ||
531 | for (i = 0; i < HPAGE_PMD_NR; i++) { | 531 | for (i = 1; i < HPAGE_PMD_NR; i++) { |
532 | pslot = radix_tree_lookup_slot(&mapping->i_pages, | 532 | pslot = radix_tree_lookup_slot(&mapping->i_pages, |
533 | index + i); | 533 | index + i); |
534 | radix_tree_replace_slot(&mapping->i_pages, pslot, | 534 | radix_tree_replace_slot(&mapping->i_pages, pslot, |
535 | newpage + i); | 535 | newpage + i); |
536 | } | 536 | } |
537 | } else { | ||
538 | radix_tree_replace_slot(&mapping->i_pages, pslot, newpage); | ||
539 | } | 537 | } |
540 | 538 | ||
541 | /* | 539 | /* |