]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - mm/migrate.c
Merge tag 'openrisc-for-linus' of git://github.com/openrisc/linux
[karo-tx-linux.git] / mm / migrate.c
index 89a0a1707f4c67deb77dc466cb6f5c2ecfe19051..051cc1555d36e34f4734a7e54faac1a6c2fe144c 100644 (file)
@@ -227,25 +227,26 @@ static bool remove_migration_pte(struct page *page, struct vm_area_struct *vma,
                if (is_write_migration_entry(entry))
                        pte = maybe_mkwrite(pte, vma);
 
+               flush_dcache_page(new);
 #ifdef CONFIG_HUGETLB_PAGE
                if (PageHuge(new)) {
                        pte = pte_mkhuge(pte);
                        pte = arch_make_huge_pte(pte, vma, new, 0);
-               }
-#endif
-               flush_dcache_page(new);
-               set_pte_at(vma->vm_mm, pvmw.address, pvmw.pte, pte);
-
-               if (PageHuge(new)) {
+                       set_huge_pte_at(vma->vm_mm, pvmw.address, pvmw.pte, pte);
                        if (PageAnon(new))
                                hugepage_add_anon_rmap(new, vma, pvmw.address);
                        else
                                page_dup_rmap(new, true);
-               } else if (PageAnon(new))
-                       page_add_anon_rmap(new, vma, pvmw.address, false);
-               else
-                       page_add_file_rmap(new, false);
+               } else
+#endif
+               {
+                       set_pte_at(vma->vm_mm, pvmw.address, pvmw.pte, pte);
 
+                       if (PageAnon(new))
+                               page_add_anon_rmap(new, vma, pvmw.address, false);
+                       else
+                               page_add_file_rmap(new, false);
+               }
                if (vma->vm_flags & VM_LOCKED && !PageTransCompound(new))
                        mlock_vma_page(new);