Re: [PATCH 5/6] ksm: use find_mergeable_vma in try_to_merge_with_ksm_page

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 15 Oct 2015, Andrea Arcangeli wrote:

> Doing the VM_MERGEABLE check after the page == kpage check won't
> provide any meaningful benefit. The !vma->anon_vma check of
> find_mergeable_vma is the only superfluous bit in using
> find_mergeable_vma because the !PageAnon check of
> try_to_merge_one_page() implicitly checks for that, but it still looks
> cleaner to share the same find_mergeable_vma().
> 
> Signed-off-by: Andrea Arcangeli <aarcange@xxxxxxxxxx>

Acked-by: Hugh Dickins <hughd@xxxxxxxxxx>

This looks like a nice little cleanup; I'm not 100% sure of it, forked
pages always awkward here; but you're clearly more in touch with this
now than I am, and I've seen no problem from it, so let's go with this.

> ---
>  mm/ksm.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/mm/ksm.c b/mm/ksm.c
> index 241588e..10618a3 100644
> --- a/mm/ksm.c
> +++ b/mm/ksm.c
> @@ -1057,8 +1057,6 @@ static int try_to_merge_one_page(struct vm_area_struct *vma,
>  	if (page == kpage)			/* ksm page forked */
>  		return 0;
>  
> -	if (!(vma->vm_flags & VM_MERGEABLE))
> -		goto out;
>  	if (PageTransCompound(page) && page_trans_compound_anon_split(page))
>  		goto out;
>  	BUG_ON(PageTransCompound(page));
> @@ -1135,8 +1133,8 @@ static int try_to_merge_with_ksm_page(struct rmap_item *rmap_item,
>  		return err;
>  
>  	down_read(&mm->mmap_sem);
> -	vma = find_vma(mm, rmap_item->address);
> -	if (!vma || vma->vm_start > rmap_item->address)
> +	vma = find_mergeable_vma(mm, rmap_item->address);
> +	if (!vma)
>  		goto out;
>  
>  	err = try_to_merge_one_page(vma, page, kpage);

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]