mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
maple_tree: fix get wrong data_end in mtree_lookup_walk()
commitec07967d75upstream. if (likely(offset > end)) max = pivots[offset]; The above code should be changed to if (likely(offset < end)), which is correct. This affects the correctness of ma_data_end(). Now it seems that the final result will not be wrong, but it is best to change it. This patch does not change the code as above, because it simplifies the code by the way. Link: https://lkml.kernel.org/r/20230314124203.91572-1-zhangpeng.00@bytedance.com Link: https://lkml.kernel.org/r/20230314124203.91572-2-zhangpeng.00@bytedance.com Fixes:54a611b605("Maple Tree: add new data structure") Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com> Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
f042ee354c
commit
4f5760757f
@@ -3870,18 +3870,13 @@ static inline void *mtree_lookup_walk(struct ma_state *mas)
|
||||
end = ma_data_end(node, type, pivots, max);
|
||||
if (unlikely(ma_dead_node(node)))
|
||||
goto dead_node;
|
||||
|
||||
if (pivots[offset] >= mas->index)
|
||||
goto next;
|
||||
|
||||
do {
|
||||
offset++;
|
||||
} while ((offset < end) && (pivots[offset] < mas->index));
|
||||
if (pivots[offset] >= mas->index) {
|
||||
max = pivots[offset];
|
||||
break;
|
||||
}
|
||||
} while (++offset < end);
|
||||
|
||||
if (likely(offset > end))
|
||||
max = pivots[offset];
|
||||
|
||||
next:
|
||||
slots = ma_slots(node, type);
|
||||
next = mt_slot(mas->tree, slots, offset);
|
||||
if (unlikely(ma_dead_node(node)))
|
||||
|
||||
Reference in New Issue
Block a user