Re: [PATCH v3 00/19] maple_tree: lock checking and clean ups
"Liam R. Howlett (Oracle)" <[email protected]>
| Newsgroups | org.kvack.linux-mm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <bbvvwdn6r2lliisrsl5veniwjoqkfqgarixjphucrahcwhsgj6@ng3kkcoiyxkv> |
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/[email protected]/ > v1: https://lore.kernel.org/all/[email protected]/ > > 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 >