[PATCH] maple_tree: Fix mas_empty_area() wrapping

Liam Howlett posted 1 patch 3 years, 9 months ago
lib/maple_tree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] maple_tree: Fix mas_empty_area() wrapping
Posted by Liam Howlett 3 years, 9 months ago
Set the error code correctly when at the left most node and search has
been exhausted.  This was an overflow bug.

Reported-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
---
 lib/maple_tree.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/maple_tree.c b/lib/maple_tree.c
index 1b8130f19c2e..0c0bda979693 100644
--- a/lib/maple_tree.c
+++ b/lib/maple_tree.c
@@ -4994,7 +4994,7 @@ static inline bool mas_anode_descend(struct ma_state *mas, unsigned long size)
 		}
 next_slot:
 		min = pivot + 1;
-		if (mas->last < min) {
+		if (mas->last <= pivot) {
 			mas_set_err(mas, -EBUSY);
 			return true;
 		}
-- 
2.35.1
Re: [PATCH] maple_tree: Fix mas_empty_area() wrapping
Posted by Sven Schnelle 3 years, 9 months ago
Liam Howlett <liam.howlett@oracle.com> writes:

> Set the error code correctly when at the left most node and search has
> been exhausted.  This was an overflow bug.
>
> Reported-by: Sven Schnelle <svens@linux.ibm.com>
> Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>

That fixes it, thanks!

Tested-by: Sven Schnelle <svens@linux.ibm.com>

> ---
>  lib/maple_tree.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/maple_tree.c b/lib/maple_tree.c
> index 1b8130f19c2e..0c0bda979693 100644
> --- a/lib/maple_tree.c
> +++ b/lib/maple_tree.c
> @@ -4994,7 +4994,7 @@ static inline bool mas_anode_descend(struct ma_state *mas, unsigned long size)
>  		}
>  next_slot:
>  		min = pivot + 1;
> -		if (mas->last < min) {
> +		if (mas->last <= pivot) {
>  			mas_set_err(mas, -EBUSY);
>  			return true;
>  		}