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

Liam R. Howlett (Oracle) liam at infradead.org
Fri Aug 21 12:40:23 PDT 2026


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@infradead.org/
> v1: https://lore.kernel.org/all/20260629144145.1572283-1-liam@infradead.org/
> 
> 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
> 



More information about the maple-tree mailing list