From: "Liam R. Howlett" <Liam.Howlett@xxxxxxxxxx> The first search may leave the maple state in an error state. Reset the maple state before the second search so that the search has a chance of executing correctly after an exhausted first search. Link: https://lore.kernel.org/all/20241216060600.287B4C4CED0@xxxxxxxxxxxxxxx/ Fixes: 9b6713cc7522 ("maple_tree: Add mtree_alloc_cyclic()") Cc: Yang Erkun <yangerkun@xxxxxxxxxxxxxxx> Cc: chuck.lever@xxxxxxxxxx Cc: brauner@xxxxxxxxxx Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> --- lib/maple_tree.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 940d30653407b..f7153ade1be5f 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -4335,7 +4335,6 @@ int mas_alloc_cyclic(struct ma_state *mas, unsigned long *startp, { unsigned long min = range_lo; int ret = 0; - struct ma_state m = *mas; range_lo = max(min, *next); ret = mas_empty_area(mas, range_lo, range_hi, 1); @@ -4344,7 +4343,7 @@ int mas_alloc_cyclic(struct ma_state *mas, unsigned long *startp, ret = 1; } if (ret < 0 && range_lo > min) { - *mas = m; + mas_reset(mas); ret = mas_empty_area(mas, min, range_hi, 1); if (ret == 0) ret = 1; -- 2.43.0