mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-29 17:22:07 +00:00
maple_tree: we don't set offset to MAPLE_NODE_SLOTS on error
When mas_anode_descend() not find gap, it sets -EBUSY instead of setting offset to MAPLE_NODE_SLOTS. Link: https://lkml.kernel.org/r/20241116014805.11547-4-richard.weiyang@gmail.com Signed-off-by: Wei Yang <richard.weiyang@gmail.com> Reviewed-by: Liam R. Howlett <Liam.Howlett@Oracle.com> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Cc: Sidhartha Kumar <sidhartha.kumar@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
f4498ceafa
commit
346709b638
@ -5000,8 +5000,8 @@ static inline void mas_awalk(struct ma_state *mas, unsigned long size)
|
|||||||
* There are 4 options:
|
* There are 4 options:
|
||||||
* go to child (descend)
|
* go to child (descend)
|
||||||
* go back to parent (ascend)
|
* go back to parent (ascend)
|
||||||
* no gap found. (return, slot == MAPLE_NODE_SLOTS)
|
* no gap found. (return, error == -EBUSY)
|
||||||
* found the gap. (return, slot != MAPLE_NODE_SLOTS)
|
* found the gap. (return)
|
||||||
*/
|
*/
|
||||||
while (!mas_is_err(mas) && !mas_anode_descend(mas, size)) {
|
while (!mas_is_err(mas) && !mas_anode_descend(mas, size)) {
|
||||||
if (last == mas->node)
|
if (last == mas->node)
|
||||||
@ -5086,9 +5086,6 @@ int mas_empty_area(struct ma_state *mas, unsigned long min,
|
|||||||
return xa_err(mas->node);
|
return xa_err(mas->node);
|
||||||
|
|
||||||
offset = mas->offset;
|
offset = mas->offset;
|
||||||
if (unlikely(offset == MAPLE_NODE_SLOTS))
|
|
||||||
return -EBUSY;
|
|
||||||
|
|
||||||
node = mas_mn(mas);
|
node = mas_mn(mas);
|
||||||
mt = mte_node_type(mas->node);
|
mt = mte_node_type(mas->node);
|
||||||
pivots = ma_pivots(node, mt);
|
pivots = ma_pivots(node, mt);
|
||||||
|
Loading…
Reference in New Issue
Block a user