]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/blobdiff - mm/khugepaged.c
khugepaged: collapse_pte_mapped_thp() flush the right range
[mirror_ubuntu-focal-kernel.git] / mm / khugepaged.c
index f765475be359b6ca29ba3111651af0bceb544883..e98937c8bed05ba315c66f07ef22a4184bf4c88c 100644 (file)
@@ -876,6 +876,9 @@ static int hugepage_vma_revalidate(struct mm_struct *mm, unsigned long address,
                return SCAN_ADDRESS_RANGE;
        if (!hugepage_vma_check(vma, vma->vm_flags))
                return SCAN_VMA_CHECK;
+       /* Anon VMA expected */
+       if (!vma->anon_vma || vma->vm_ops)
+               return SCAN_VMA_CHECK;
        return 0;
 }
 
@@ -1381,7 +1384,7 @@ void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr)
 
        /* step 4: collapse pmd */
        ptl = pmd_lock(vma->vm_mm, pmd);
-       _pmd = pmdp_collapse_flush(vma, addr, pmd);
+       _pmd = pmdp_collapse_flush(vma, haddr, pmd);
        spin_unlock(ptl);
        mm_dec_nr_ptes(mm);
        pte_free(mm, pmd_pgtable(_pmd));