Commit 013567be authored by Naoya Horiguchi's avatar Naoya Horiguchi Committed by Linus Torvalds

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: e71769ae ("mm: enable thp migration for shmem thp")
Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Reported-by: default avatarMatthew Wilcox <willy@infradead.org>
Reviewed-by: default avatarAndrew 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 3955333d
...@@ -528,14 +528,12 @@ int migrate_page_move_mapping(struct address_space *mapping, ...@@ -528,14 +528,12 @@ int migrate_page_move_mapping(struct address_space *mapping,
int i; int i;
int index = page_index(page); int index = page_index(page);
for (i = 0; i < HPAGE_PMD_NR; i++) { for (i = 1; i < HPAGE_PMD_NR; i++) {
pslot = radix_tree_lookup_slot(&mapping->i_pages, pslot = radix_tree_lookup_slot(&mapping->i_pages,
index + i); index + i);
radix_tree_replace_slot(&mapping->i_pages, pslot, radix_tree_replace_slot(&mapping->i_pages, pslot,
newpage + i); newpage + i);
} }
} else {
radix_tree_replace_slot(&mapping->i_pages, pslot, newpage);
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment