mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-24 19:40:21 +09:00
maple_tree: reduce user error potential
commit50e81c82adupstream. When iterating, a user may operate on the tree and cause the maple state to be altered and left in an unintuitive state. Detect this scenario and correct it by setting to the limit and invalidating the state. Link: https://lkml.kernel.org/r/20230120162650.984577-4-Liam.Howlett@oracle.com Cc: <Stable@vger.kernel.org> Fixes:54a611b605("Maple Tree: add new data structure") Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
f41e9e6927
commit
2c9bc4903b
@@ -4731,6 +4731,11 @@ static inline void *mas_next_entry(struct ma_state *mas, unsigned long limit)
|
||||
unsigned long last;
|
||||
enum maple_type mt;
|
||||
|
||||
if (mas->index > limit) {
|
||||
mas->index = mas->last = limit;
|
||||
mas_pause(mas);
|
||||
return NULL;
|
||||
}
|
||||
last = mas->last;
|
||||
retry:
|
||||
offset = mas->offset;
|
||||
@@ -4837,6 +4842,11 @@ static inline void *mas_prev_entry(struct ma_state *mas, unsigned long min)
|
||||
{
|
||||
void *entry;
|
||||
|
||||
if (mas->index < min) {
|
||||
mas->index = mas->last = min;
|
||||
mas_pause(mas);
|
||||
return NULL;
|
||||
}
|
||||
retry:
|
||||
while (likely(!mas_is_none(mas))) {
|
||||
entry = mas_prev_nentry(mas, min, mas->index);
|
||||
|
||||
Reference in New Issue
Block a user