| From: Liam Howlett <liam.howlett@oracle.com> |
| Subject: maple_tree: don't set a new maximum on the node when not reusing nodes |
| Date: Mon, 7 Nov 2022 16:39:02 +0000 |
| |
| In RCU mode, the node limits were being updated to the last pivot which |
| may not be correct and would cause the metadata to be set when it |
| shouldn't. Fix this by not setting a new limit in this case. |
| |
| Link: https://lkml.kernel.org/r/20221107163857.867377-1-Liam.Howlett@oracle.com |
| Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| lib/maple_tree.c | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| --- a/lib/maple_tree.c~maple_tree-dont-set-a-new-maximum-on-the-node-when-not-reusing-nodes |
| +++ a/lib/maple_tree.c |
| @@ -3603,8 +3603,7 @@ static inline int mas_commit_b_node(stru |
| node = mas_pop_node(wr_mas->mas); |
| node->parent = mas_mn(wr_mas->mas)->parent; |
| wr_mas->mas->node = mt_mk_node(node, b_type); |
| - mab_mas_cp(b_node, 0, b_end, wr_mas->mas, true); |
| - |
| + mab_mas_cp(b_node, 0, b_end, wr_mas->mas, false); |
| mas_replace(wr_mas->mas, false); |
| reuse_node: |
| mas_update_gap(wr_mas->mas); |
| _ |