All of lore.kernel.org
 help / color / mirror / Atom feed
From: zijun_hu <zijun_hu@zoho.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	zijun_hu@htc.com, tj@kernel.org, mingo@kernel.org,
	rientjes@google.com, iamjoonsoo.kim@lge.com,
	mgorman@techsingularity.net
Subject: Re: [RFC PATCH 1/5] mm/vmalloc.c: correct a few logic error for __insert_vmap_area()
Date: Thu, 22 Sep 2016 09:36:01 +0800	[thread overview]
Message-ID: <57E33581.5030409@zoho.com> (raw)
In-Reply-To: <57E20B54.5020408@zoho.com>

On 09/21/2016 12:23 PM, zijun_hu wrote:
> From: zijun_hu <zijun_hu@htc.com>
> 
> correct a few logic error for __insert_vmap_area() since the else
> if condition is always true and meaningless
> 
> in order to fix this issue, if vmap_area inserted is lower than one
> on rbtree then walk around left branch; if higher then right branch
> otherwise intersects with the other then BUG_ON() is triggered
> 
> Signed-off-by: zijun_hu <zijun_hu@htc.com>
i give more explanation to the intent of my change
any comments is welcome
> ---
>  mm/vmalloc.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> index 91f44e7..cc6ecd6 100644
> --- a/mm/vmalloc.c
> +++ b/mm/vmalloc.c
> @@ -321,10 +321,10 @@ static void __insert_vmap_area(struct vmap_area *va)
>  
>  		parent = *p;
>  		tmp_va = rb_entry(parent, struct vmap_area, rb_node);
> -		if (va->va_start < tmp_va->va_end)
> -			p = &(*p)->rb_left;
> -		else if (va->va_end > tmp_va->va_start)
> -			p = &(*p)->rb_right;
this else if condition is always true and meaningless as long as there are no
zero sized vamp_area due to the following expression
va->va_end > va->va_start >= tmp_va->va_end > tmp_va->va_start

> +		if (va->va_end <= tmp_va->va_start)
> +			p = &parent->rb_left;
if the vamp_area to be inserted is lower than that on the rbtree then
we walk around the left branch of the node given
consider va->va_end == tmp_va->va_start as legal case which represent
two neighbor areas tightly
BTW, the available range of a vmap area include the start boundary not the
end, namely, [start, end)
> +		else if (va->va_start >= tmp_va->va_end)
> +			p = &parent->rb_right;
if the vamp_area to be inserted is higher than that on the rbtree then
we walk around the right branch of the node given
>  		else
>  			BUG();
this indicate the vamp_area to be inserted have intersects with that on the rbtree
then we remain the BUG() logic
>  	}
> 


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

WARNING: multiple messages have this Message-ID (diff)
From: zijun_hu <zijun_hu@zoho.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	zijun_hu@htc.com, tj@kernel.org, mingo@kernel.org,
	rientjes@google.com, iamjoonsoo.kim@lge.com,
	mgorman@techsingularity.net
Subject: Re: [RFC PATCH 1/5] mm/vmalloc.c: correct a few logic error for __insert_vmap_area()
Date: Thu, 22 Sep 2016 09:36:01 +0800	[thread overview]
Message-ID: <57E33581.5030409@zoho.com> (raw)
In-Reply-To: <57E20B54.5020408@zoho.com>

On 09/21/2016 12:23 PM, zijun_hu wrote:
> From: zijun_hu <zijun_hu@htc.com>
> 
> correct a few logic error for __insert_vmap_area() since the else
> if condition is always true and meaningless
> 
> in order to fix this issue, if vmap_area inserted is lower than one
> on rbtree then walk around left branch; if higher then right branch
> otherwise intersects with the other then BUG_ON() is triggered
> 
> Signed-off-by: zijun_hu <zijun_hu@htc.com>
i give more explanation to the intent of my change
any comments is welcome
> ---
>  mm/vmalloc.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> index 91f44e7..cc6ecd6 100644
> --- a/mm/vmalloc.c
> +++ b/mm/vmalloc.c
> @@ -321,10 +321,10 @@ static void __insert_vmap_area(struct vmap_area *va)
>  
>  		parent = *p;
>  		tmp_va = rb_entry(parent, struct vmap_area, rb_node);
> -		if (va->va_start < tmp_va->va_end)
> -			p = &(*p)->rb_left;
> -		else if (va->va_end > tmp_va->va_start)
> -			p = &(*p)->rb_right;
this else if condition is always true and meaningless as long as there are no
zero sized vamp_area due to the following expression
va->va_end > va->va_start >= tmp_va->va_end > tmp_va->va_start

> +		if (va->va_end <= tmp_va->va_start)
> +			p = &parent->rb_left;
if the vamp_area to be inserted is lower than that on the rbtree then
we walk around the left branch of the node given
consider va->va_end == tmp_va->va_start as legal case which represent
two neighbor areas tightly
BTW, the available range of a vmap area include the start boundary not the
end, namely, [start, end)
> +		else if (va->va_start >= tmp_va->va_end)
> +			p = &parent->rb_right;
if the vamp_area to be inserted is higher than that on the rbtree then
we walk around the right branch of the node given
>  		else
>  			BUG();
this indicate the vamp_area to be inserted have intersects with that on the rbtree
then we remain the BUG() logic
>  	}
> 

  parent reply	other threads:[~2016-09-22  1:36 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-21  4:23 [PATCH 1/5] mm/vmalloc.c: correct a few logic error for __insert_vmap_area() zijun_hu
2016-09-21  4:23 ` zijun_hu
2016-09-21 21:10 ` David Rientjes
2016-09-21 21:10   ` David Rientjes
2016-09-21 22:35   ` zijun_hu
2016-09-21 22:35     ` zijun_hu
2016-09-21 22:45     ` David Rientjes
2016-09-21 22:45       ` David Rientjes
2016-09-21 23:10       ` zijun_hu
2016-09-21 23:10         ` zijun_hu
2016-09-21 23:15         ` David Rientjes
2016-09-21 23:15           ` David Rientjes
2016-09-21 23:55           ` zijun_hu
2016-09-21 23:55             ` zijun_hu
2016-09-27  6:07           ` zijun_hu
2016-09-27  6:07             ` zijun_hu
2016-09-22  1:36 ` zijun_hu [this message]
2016-09-22  1:36   ` [RFC PATCH " zijun_hu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=57E33581.5030409@zoho.com \
    --to=zijun_hu@zoho.com \
    --cc=akpm@linux-foundation.org \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@techsingularity.net \
    --cc=mingo@kernel.org \
    --cc=rientjes@google.com \
    --cc=tj@kernel.org \
    --cc=zijun_hu@htc.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.