On Thu Sep 17, 2026 at 12:22 PM EDT, Lorenzo Stoakes (ARM) wrote:
> It is now an invariant that VMA_IO_BIT is not set except by kernel-owned
> mappings, so each existing VMA_SPECIAL_FLAGS test need only test for
> VMA_DONTEXPAND_BIT, VMA_PFNMAP_BIT and VMA_MIXEDMAP_BIT.
>
> This is precisely a test for a kernel-owned or fixed mapping.
>
> Update a number of callsites which already explicitly handle hugetlb
> mappings.
>
> vma_supports_mlock() and ksm_compatible() also explicitly bail on droppable
> mappings - detecting kernel-owned, fixed or droppable mappings is handled
> by vma_is_persistent(), so in these cases use this predicate.
>
> should_skip_vma() tests for locked, kernel-owned or fixed memory (having
> already excluded hugetlb mappings) so simply test for those there.
>
> No functional change intended.
>
> Signed-off-by: Lorenzo Stoakes (ARM) <[email protected]>
> ---
>  mm/internal.h | 4 +---
>  mm/ksm.c      | 4 +---
>  mm/vmscan.c   | 3 ++-
>  3 files changed, 4 insertions(+), 7 deletions(-)
>

<snip>

> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 12ed3388ee41..09ff20c3df5b 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -3477,7 +3477,8 @@ static int should_skip_vma(unsigned long start, 
> unsigned long end, struct mm_wal
>       if (!vma_has_recency(vma))
>               return true;
>  
> -     if (vma->vm_flags & (VM_LOCKED | VM_SPECIAL))
> +     if (vma_test(vma, VMA_LOCKED_BIT) || vma_is_kernel_owned(vma) ||

At this point, mmap_lock is held, there is no mlock WIP, so
VMA_LOCKED_BIT is enough.

> +         vma_is_fixed_mapping(vma))
>               return true;
>  
>       if (vma == get_gate_vma(vma->vm_mm))

LGTM.

Reviewed-by: Zi Yan <[email protected]>


-- 
Best Regards,
Yan, Zi


Reply via email to