Re: [PATCH 6/6] ksm: unstable_tree_search_insert error checking cleanup

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

 



On Thu, 15 Oct 2015, Andrea Arcangeli wrote:

> get_mergeable_page() can only return NULL (in case of errors) or the
> pinned mergeable page. It can't return an error different than
> NULL. This makes it more readable and less confusion in addition to
> optimizing the check.
> 
> Signed-off-by: Andrea Arcangeli <aarcange@xxxxxxxxxx>

I share your sentiment, prefer to avoid an unnecessary IS_ERR_OR_NULL.
And you may be right that it's unnecessary; but that's far from clear
to me, and you haven't changed the IS_ERR_OR_NULL after follow_page()
in get_mergeable_page() where it originates, so I wonder if you just
got confused on this.

Even if you have established that there's currently no way that
follow_page(vma, addr, FOLL_GET) could return an -errno on a vma
validated by find_mergeable_vma(), I think we'd still be better off
to allow for some future -errno there; but I'd be happy for you to
keep the change below, but also adjust get_mergeable_page() to
convert an -errno immediately to NULL after follow_page().

So, I think this is gently Nacked in its present form,
but a replacement eagerly Acked.

Hugh

> ---
>  mm/ksm.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/ksm.c b/mm/ksm.c
> index 10618a3..dcefc37 100644
> --- a/mm/ksm.c
> +++ b/mm/ksm.c
> @@ -1409,7 +1409,7 @@ struct rmap_item *unstable_tree_search_insert(struct rmap_item *rmap_item,
>  		cond_resched();
>  		tree_rmap_item = rb_entry(*new, struct rmap_item, node);
>  		tree_page = get_mergeable_page(tree_rmap_item);
> -		if (IS_ERR_OR_NULL(tree_page))
> +		if (!tree_page)
>  			return NULL;
>  
>  		/*

--
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]