On Fri, 16 Dec 2022 18:53:15 +0000 Liam Howlett <liam.howlett@xxxxxxxxxx> wrote: > Mike Rapoport contacted me off-list with a regression in running criu. > Periodic tests fail with an RCU stall during execution. Although rare, > it is possible to hit this with other uses so this patch should be > backported to fix the regression. > > An insufficient node was causing an out-of-bounds access on the node in > mas_leaf_max_gap(). The cause was the faulty detection of the new node > being a root node when overwriting many entries at the end of the tree. > > Fix the detection of a new root and ensure there is sufficient data > prior to entering the spanning rebalance loop. > > Add a testcase to the maple tree test suite for this issue. Shall do. > Cc: Andrei Vagin <avagin@xxxxxxxxx> > Cc: usama.anjum@xxxxxxxxxxxxx > Reported-by: Mike Rapoport <rppt@xxxxxxxxxx> > Fixes: 54a611b60590 ("Maple Tree: add new data structure") > Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> I guess we want a cc:stable there? > lib/test_maple_tree.c | 23 +++++++++++++++++++++++ Belated review: all this code runs at __init time, so every dang function in there really should be marked __init, data marked __initdata, etc. Like lib/test_bitmap.c. I wonder if there's some trick we can do external to the .c file to have the same effect. Also, maple_tree_seed():set[] could be static ;). So we don't have to initialize it at runtime. Better would be static const. Nitpick.