diff mbox series

maple_tree: Fix the error of mas->min/max in mas_skip_node()

Message ID 20230307160340.57074-1-zhangpeng.00@bytedance.com (mailing list archive)
State New
Headers show
Series maple_tree: Fix the error of mas->min/max in mas_skip_node() | expand

Commit Message

Peng Zhang March 7, 2023, 4:03 p.m. UTC
The assignment of mas->min and mas->max is wrong. mas->min and mas->max
should represent the range of the current node. After mas_ascend()
returns, mas-min and mas->max already represent the range of the current
node, so we should delete these assignments of mas->min and mas->max.

Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com>
---
 lib/maple_tree.c | 10 ----------
 1 file changed, 10 deletions(-)

Comments

Greg KH March 7, 2023, 4:21 p.m. UTC | #1
On Wed, Mar 08, 2023 at 12:03:40AM +0800, Peng Zhang wrote:
> The assignment of mas->min and mas->max is wrong. mas->min and mas->max
> should represent the range of the current node. After mas_ascend()
> returns, mas-min and mas->max already represent the range of the current
> node, so we should delete these assignments of mas->min and mas->max.
> 
> Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com>
> ---
>  lib/maple_tree.c | 10 ----------
>  1 file changed, 10 deletions(-)
> 
> diff --git a/lib/maple_tree.c b/lib/maple_tree.c
> index f5bee48de569..d4ddf7f8adc7 100644
> --- a/lib/maple_tree.c
> +++ b/lib/maple_tree.c
> @@ -5157,9 +5157,6 @@ static inline bool mas_rewind_node(struct ma_state *mas)
>   */
>  static inline bool mas_skip_node(struct ma_state *mas)
>  {
> -	unsigned long *pivots;
> -	enum maple_type mt;
> -
>  	if (mas_is_err(mas))
>  		return false;
>  
> @@ -5173,14 +5170,7 @@ static inline bool mas_skip_node(struct ma_state *mas)
>  			mas_ascend(mas);
>  		}
>  	} while (mas->offset >= mas_data_end(mas));
> -
> -	mt = mte_node_type(mas->node);
> -	pivots = ma_pivots(mas_mn(mas), mt);
> -	mas->min = pivots[mas->offset] + 1;
>  	mas->offset++;
> -	if (mas->offset < mt_slots[mt])
> -		mas->max = pivots[mas->offset];
> -
>  	return true;
>  }
>  
> -- 
> 2.20.1
> 

<formletter>

This is not the correct way to submit patches for inclusion in the
stable kernel tree.  Please read:
    https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how to do this properly.

</formletter>
Andrew Morton March 9, 2023, 1:55 a.m. UTC | #2
On Wed,  8 Mar 2023 00:03:40 +0800 Peng Zhang <zhangpeng.00@bytedance.com> wrote:

> The assignment of mas->min and mas->max is wrong. mas->min and mas->max
> should represent the range of the current node. After mas_ascend()
> returns, mas-min and mas->max already represent the range of the current
> node, so we should delete these assignments of mas->min and mas->max.
> 

Please fully describe the user-visible effects of the flaw, especially
when proposing a -stable backport.
Peng Zhang March 9, 2023, 2:09 a.m. UTC | #3
在 2023/3/9 09:55, Andrew Morton 写道:
> On Wed,  8 Mar 2023 00:03:40 +0800 Peng Zhang <zhangpeng.00@bytedance.com> wrote:
>
>> The assignment of mas->min and mas->max is wrong. mas->min and mas->max
>> should represent the range of the current node. After mas_ascend()
>> returns, mas-min and mas->max already represent the range of the current
>> node, so we should delete these assignments of mas->min and mas->max.
>>
> Please fully describe the user-visible effects of the flaw, especially
> when proposing a -stable backport.
>
The fixes made by this patch have been included in 
https://lore.kernel.org/lkml/20230307180247.2220303-2-Liam.Howlett@oracle.com/, 
so please don't pay attention.
diff mbox series

Patch

diff --git a/lib/maple_tree.c b/lib/maple_tree.c
index f5bee48de569..d4ddf7f8adc7 100644
--- a/lib/maple_tree.c
+++ b/lib/maple_tree.c
@@ -5157,9 +5157,6 @@  static inline bool mas_rewind_node(struct ma_state *mas)
  */
 static inline bool mas_skip_node(struct ma_state *mas)
 {
-	unsigned long *pivots;
-	enum maple_type mt;
-
 	if (mas_is_err(mas))
 		return false;
 
@@ -5173,14 +5170,7 @@  static inline bool mas_skip_node(struct ma_state *mas)
 			mas_ascend(mas);
 		}
 	} while (mas->offset >= mas_data_end(mas));
-
-	mt = mte_node_type(mas->node);
-	pivots = ma_pivots(mas_mn(mas), mt);
-	mas->min = pivots[mas->offset] + 1;
 	mas->offset++;
-	if (mas->offset < mt_slots[mt])
-		mas->max = pivots[mas->offset];
-
 	return true;
 }