maple_tree: fix allocation in mas_sparse_area()
authorPeng Zhang <zhangpeng.00@bytedance.com>
Wed, 19 Apr 2023 09:36:25 +0000 (17:36 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 21 Apr 2023 21:52:04 +0000 (14:52 -0700)
commit29ad6bb313487370f9dfe5441fc8982593b6384e
tree583845857f3e70bfd9c232f1a793f01cc03ed850
parent53156443a30368c0759c22e54a8d5cacc1b543cc
maple_tree: fix allocation in mas_sparse_area()

In the case of reverse allocation, mas->index and mas->last do not point
to the correct allocation range, which will cause users to get incorrect
allocation results, so fix it.  If the user does not use it in a specific
way, this bug will not be triggered.

This is a bug, but only VMA uses it now, the way VMA is used now will
not trigger it.  There is a possibility that a user will trigger it in
the future.

Also re-check whether the size is still satisfied after the lower bound
was increased, which is a corner case and is incorrect in previous
versions.

Link: https://lkml.kernel.org/r/20230419093625.99201-1-zhangpeng.00@bytedance.com
Fixes: 54a611b60590 ("Maple Tree: add new data structure")
Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com>
Cc: Liam R. Howlett <Liam.Howlett@Oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
lib/maple_tree.c