From: "Kiryl Shutsemau (Meta)" <[email protected]> collapse_single_pmd() derives the end of its range from its start: one PMD, always. Both of its callers already know the range they mean.
Take the end as an argument and pass it to the scan and the collapse, both of which already accept a partial table. Both callers pass what the function computed for itself. Preparation for scanning a VMA that holds less than a whole table. No functional change intended. Assisted-by: Claude-Code:claude-opus-5 Signed-off-by: Kiryl Shutsemau (Meta) <[email protected]> --- mm/khugepaged.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 0662d08f7c60..d1e031ed3e6f 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -2738,8 +2738,8 @@ static enum scan_result collapse_scan_file(struct mm_struct *mm, * the results. */ static enum scan_result collapse_single_pmd(unsigned long addr, - struct vm_area_struct *vma, bool *lock_dropped, - struct collapse_control *cc) + unsigned long end, struct vm_area_struct *vma, + bool *lock_dropped, struct collapse_control *cc) { struct mm_struct *mm = vma->vm_mm; bool triggered_wb = false; @@ -2750,8 +2750,7 @@ static enum scan_result collapse_single_pmd(unsigned long addr, mmap_assert_locked(mm); if (vma_is_anonymous(vma)) { - result = collapse_scan_anon_pmd(vma, addr, addr + HPAGE_PMD_SIZE, - cc); + result = collapse_scan_anon_pmd(vma, addr, end, cc); if (!cc->select_orders) goto end; @@ -2759,7 +2758,7 @@ static enum scan_result collapse_single_pmd(unsigned long addr, mmap_read_unlock(mm); *lock_dropped = true; - result = collapse_anon_pmd(mm, addr, addr + HPAGE_PMD_SIZE, cc); + result = collapse_anon_pmd(mm, addr, end, cc); goto end; } @@ -2872,6 +2871,8 @@ static void collapse_scan_mm_slot(unsigned int progress_max, hend); *result = collapse_single_pmd(khugepaged_scan.address, + khugepaged_scan.address + + HPAGE_PMD_SIZE, vma, &lock_dropped, cc); /* move to next address */ khugepaged_scan.address += HPAGE_PMD_SIZE; @@ -3211,7 +3212,8 @@ int madvise_collapse(struct vm_area_struct *vma, unsigned long start, hend = min(hend, vma->vm_end & HPAGE_PMD_MASK); } - result = collapse_single_pmd(addr, vma, &mmap_unlocked, cc); + result = collapse_single_pmd(addr, addr + HPAGE_PMD_SIZE, vma, + &mmap_unlocked, cc); switch (result) { case SCAN_SUCCEED: -- 2.54.0
