linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] maple_tree: Fix mas_prev() state regression.
@ 2023-09-22 15:38 Liam R. Howlett
  2023-09-22 15:38 ` [PATCH v2 1/2] maple_tree: Add mas_is_active() to detect in-tree walks Liam R. Howlett
  2023-09-22 15:38 ` [PATCH v2 2/2] maple_tree: Add MAS_UNDERFLOW and MAS_OVERFLOW states Liam R. Howlett
  0 siblings, 2 replies; 3+ messages in thread
From: Liam R. Howlett @ 2023-09-22 15:38 UTC (permalink / raw)
  To: Andrew Morton
  Cc: maple-tree, linux-mm, linux-kernel, pedro.falcato, stable,
	Liam R. Howlett

Pedro Falcato retported an mprotect regression [1] which was bisected back
to the iterator changes for maple tree.  Root cause analysis showed the
mas_prev() running off the end of the VMA space (previous from 0)
followed by mas_find(), would skip the first value.

This patch set introduces maple state underflow/overflow so the sequence
of calls on the maple state will return what the user expects.

Users who encounter this bug may see mprotect(), userfaultfd_register(),
and mlock() fail on VMAs mapped with address 0.

[1]  https://bugs.archlinux.org/task/79656

Liam R. Howlett (2):
  maple_tree: Add mas_is_active() to detect in-tree walks
  maple_tree: Add MAS_UNDERFLOW and MAS_OVERFLOW states

 include/linux/maple_tree.h |  11 ++
 lib/maple_tree.c           | 221 +++++++++++++++++++++++++++----------
 lib/test_maple_tree.c      |  87 ++++++++++++---
 3 files changed, 246 insertions(+), 73 deletions(-)

-- 
2.40.1



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-09-22 15:39 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-22 15:38 [PATCH v2 0/2] maple_tree: Fix mas_prev() state regression Liam R. Howlett
2023-09-22 15:38 ` [PATCH v2 1/2] maple_tree: Add mas_is_active() to detect in-tree walks Liam R. Howlett
2023-09-22 15:38 ` [PATCH v2 2/2] maple_tree: Add MAS_UNDERFLOW and MAS_OVERFLOW states Liam R. Howlett

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox