On Thu, Mar 03, 2022 at 06:07:56PM -0600, Bob Pearson wrote: > There are several race conditions discovered in the current rdma_rxe > driver. They mostly relate to races between normal operations and > destroying objects. This patch series > - Makes several minor cleanups in rxe_pool.[ch] > - Replaces the red-black trees currently used by xarrays for indices > - Corrects several reference counting errors > - Adds wait for completions to the paths in verbs APIs which destroy > objects. > - Changes read side locking to rcu. > > Signed-off-by: Bob Pearson <rpearsonhpe@xxxxxxxxx> > v11 > Rebased to current for-next. > Reordered patches and made other changes to respond to issues > reported by Jason Gunthorpe. > v10 > Rebased to current wip/jgg-for-next. > Split some patches into smaller ones. > v9 > Corrected issues reported by Jason Gunthorpe, > Converted locking in rxe_mcast.c and rxe_pool.c to use RCU > Split up the patches into smaller changes > v8 > Fixed an additional race in 3/8 which was not handled correctly. > v7 > Corrected issues reported by Jason Gunthorpe > Link: https://lore.kernel.org/linux-rdma/20211207190947.GH6385@xxxxxxxxxx/ > Link: https://lore.kernel.org/linux-rdma/20211207191857.GI6385@xxxxxxxxxx/ > Link: https://lore.kernel.org/linux-rdma/20211207192824.GJ6385@xxxxxxxxxx/ > v6 > Fixed a kzalloc flags bug. > Fixed comment bug reported by 'Kernel Test Robot'. > Changed type of rxe_pool.c in __rxe_fini(). > v5 > Removed patches already accepted into for-next and addressed comments > from Jason Gunthorpe. > v4 > Restructured patch series to change to xarray earlier which > greatly simplified the changes. > Rebased to current for-next > v3 > Changed rxe_alloc to use GFP_KERNEL > Addressed other comments by Jason Gunthorp > Merged the previous 06/10 and 07/10 patches into one since they overlapped > Added some minor cleanups as 10/10 > v2 > Rebased to current for-next. > Added 4 additional patches > > Bob Pearson (13): > RDMA/rxe: Fix ref error in rxe_av.c > RDMA/rxe: Replace mr by rkey in responder resources > RDMA/rxe: Reverse the sense of RXE_POOL_NO_ALLOC > RDMA/rxe: Delete _locked() APIs for pool objects > RDMA/rxe: Replace obj by elem in declaration > RDMA/rxe: Move max_elem into rxe_type_info > RDMA/rxe: Shorten pool names in rxe_pool.c > RDMA/rxe: Replace red-black trees by xarrays > RDMA/rxe: Use standard names for ref counting If you let me know about the WARN_ON I think up to here is good Thanks, Jason