|
@@ -2158,7 +2158,8 @@ static int __collapse_huge_page_isolate(struct vm_area_struct *vma,
|
|
|
_pte++, address += PAGE_SIZE) {
|
|
|
pte_t pteval = *_pte;
|
|
|
if (pte_none(pteval) || is_zero_pfn(pte_pfn(pteval))) {
|
|
|
- if (++none_or_zero <= khugepaged_max_ptes_none)
|
|
|
+ if (!userfaultfd_armed(vma) &&
|
|
|
+ ++none_or_zero <= khugepaged_max_ptes_none)
|
|
|
continue;
|
|
|
else
|
|
|
goto out;
|
|
@@ -2611,7 +2612,8 @@ static int khugepaged_scan_pmd(struct mm_struct *mm,
|
|
|
_pte++, _address += PAGE_SIZE) {
|
|
|
pte_t pteval = *_pte;
|
|
|
if (pte_none(pteval) || is_zero_pfn(pte_pfn(pteval))) {
|
|
|
- if (++none_or_zero <= khugepaged_max_ptes_none)
|
|
|
+ if (!userfaultfd_armed(vma) &&
|
|
|
+ ++none_or_zero <= khugepaged_max_ptes_none)
|
|
|
continue;
|
|
|
else
|
|
|
goto out_unmap;
|