Re: [PATCH v3 00/19] maple_tree: lock checking and clean ups

From: Liam R. Howlett (Oracle)

Date: Fri Aug 21 2026 - 15:40:34 EST


On 26/08/21 03:26PM, Liam R. Howlett (Oracle) wrote:
> In this series:
> 1. Try to detect lock issues
> A number of syzbot reports are incorrectly pointing to the mm exit as
> a source of the locking error. The first three patches attempt to
> help users detect errors in their locking - but they still have to use
> LOCKDEP. I guess it's still down to hope and prayers.
>
> 2. Documentation fixes
> The documentation was lacking clarity, there are updates to try and
> help the users, especially around the erase() cases.
>
> 3. Two benign issues
> The cyclic allocator may have a race, although no in-kernel user can
> hit it.
> The erase functions may cause allocation issues if used with the
> incorrect locking type, but none are present in-tree.
>
> 4. The erase gfp uses
> mas_erase() and mtree_erase() do not take a gfp argument. To improve
> reliability of the erase, the first attempt to allocate will be
> GFP_NOWAIT, followed by a retry (if necessary of GFP_KERNEL |
> GFP_NOFAIL. This will ensure the data is gone. I've updated the
> documentation to make it more clear as well. mas_store() is not
> addressed in the same way, but may need to be updated at a later date,
> but that may require changing callers so it is out of scope here.
>
> Beyond these goals there are some test fixes, some general speed-up
> patches targeting extra work and cycles, and dropping dead code.
>
> v2: https://lore.kernel.org/all/20260630190843.3563858-1-liam@xxxxxxxxxxxxx/
> v1: https://lore.kernel.org/all/20260629144145.1572283-1-liam@xxxxxxxxxxxxx/
>
> Changes since v2:
> - Added a mas_nomem_nofail() function for mas_erase() - Thanks Jason,
> Vlastimil, and Pedro.
> - Dropped the WARN_ON() that was triggered by syzbot and questioned by
> Andrew - Thanks Andrew (and the syzbot)

Sorry, I forgot Breno Leitao's help with the lockdep testing. Thanks
Breno, I appreciate the testing and help with that (and for working on
debian)!

>
> Liam R. Howlett (Oracle) (19):
> maple_tree: Add rcu locking check when LOCKDEP is enabled
> locking/lockdep: Add sequence counter to held_lock
> maple_tree: Add write lock checking with lockdep sequence numbers
> maple_tree: Documentation fix
> maple_tree: Drop dead code from mas_extend_spanning_null()
> maple_tree: Drop MAPLE_ALLOC_SLOTS
> maple_tree: Clarify comments on mas_nomem()
> maple_tree: Use prefetched value in mas_wr_store_type()
> maple_tree: Optimise mas_wr_node_store() when not in rcu mode
> maple_tree: micro optimisation of mas_wr_store_type()
> maple_tree: Add bulk parent set helper
> maple_tree: Catch race in mas_alloc_cyclic()
> maple_tree: Document that erase may use GFP_KERNEL for allocations
> maple_tree: Avoid mas_erase() and mtree_erase() failures
> maple_tree: Document erase and allocations better
> maple_tree: Change two GFP flags in tests
> maple_tree: Fix argument name in header
> maple_tree: Avoid extra gap calculation
> maple_tree: Add helper mas_make_walkable()
>
> Documentation/core-api/maple_tree.rst | 23 +-
> include/linux/lockdep.h | 3 +
> include/linux/lockdep_types.h | 3 +-
> include/linux/maple_tree.h | 12 +-
> include/linux/sched.h | 1 +
> kernel/locking/lockdep.c | 58 +++-
> lib/maple_tree.c | 394 ++++++++++++++++++--------
> tools/testing/radix-tree/maple.c | 4 +-
> 8 files changed, 366 insertions(+), 132 deletions(-)
>
> --
> 2.47.3
>