mm: simplify thp_vma_allowable_order
[sfrench/cifs-2.6.git] / mm / khugepaged.c
index cf518fc4409822027a1ec60aac150afca9639bc6..774a97e6e2da39f0c174b885f2ea2297a8df4c61 100644 (file)
@@ -453,7 +453,7 @@ void khugepaged_enter_vma(struct vm_area_struct *vma,
 {
        if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags) &&
            hugepage_flags_enabled()) {
-               if (thp_vma_allowable_order(vma, vm_flags, false, false, true,
+               if (thp_vma_allowable_order(vma, vm_flags, TVA_ENFORCE_SYSFS,
                                            PMD_ORDER))
                        __khugepaged_enter(vma->vm_mm);
        }
@@ -900,6 +900,7 @@ static int hugepage_vma_revalidate(struct mm_struct *mm, unsigned long address,
                                   struct collapse_control *cc)
 {
        struct vm_area_struct *vma;
+       unsigned long tva_flags = cc->is_khugepaged ? TVA_ENFORCE_SYSFS : 0;
 
        if (unlikely(hpage_collapse_test_exit_or_disable(mm)))
                return SCAN_ANY_PROCESS;
@@ -910,8 +911,7 @@ static int hugepage_vma_revalidate(struct mm_struct *mm, unsigned long address,
 
        if (!thp_vma_suitable_order(vma, address, PMD_ORDER))
                return SCAN_ADDRESS_RANGE;
-       if (!thp_vma_allowable_order(vma, vma->vm_flags, false, false,
-                                    cc->is_khugepaged, PMD_ORDER))
+       if (!thp_vma_allowable_order(vma, vma->vm_flags, tva_flags, PMD_ORDER))
                return SCAN_VMA_CHECK;
        /*
         * Anon VMA expected, the address may be unmapped then
@@ -1501,8 +1501,7 @@ int collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr,
         * and map it by a PMD, regardless of sysfs THP settings. As such, let's
         * analogously elide sysfs THP settings here.
         */
-       if (!thp_vma_allowable_order(vma, vma->vm_flags, false, false, false,
-                                    PMD_ORDER))
+       if (!thp_vma_allowable_order(vma, vma->vm_flags, 0, PMD_ORDER))
                return SCAN_VMA_CHECK;
 
        /* Keep pmd pgtable for uffd-wp; see comment in retract_page_tables() */
@@ -2363,8 +2362,8 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result,
                        progress++;
                        break;
                }
-               if (!thp_vma_allowable_order(vma, vma->vm_flags, false, false,
-                                            true, PMD_ORDER)) {
+               if (!thp_vma_allowable_order(vma, vma->vm_flags,
+                                       TVA_ENFORCE_SYSFS, PMD_ORDER)) {
 skip:
                        progress++;
                        continue;
@@ -2701,8 +2700,7 @@ int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev,
 
        *prev = vma;
 
-       if (!thp_vma_allowable_order(vma, vma->vm_flags, false, false, false,
-                                    PMD_ORDER))
+       if (!thp_vma_allowable_order(vma, vma->vm_flags, 0, PMD_ORDER))
                return -EINVAL;
 
        cc = kmalloc(sizeof(*cc), GFP_KERNEL);