There are several race conditions discovered in the rdma_rxe driver. These patches correct them. They mostly relate to races between normal operations and destroying objects. This patch series applies cleanly to current for-next. commit 71ee1f127543 ("Merge brank 'mlx5_mkey' into rdma.git for-next") Signed-off-by: Bob Pearson <rpearsonhpe@xxxxxxxxx> --- 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 (10): RDMA/rxe: Make rxe_alloc() take pool lock RDMA/rxe: Copy setup parameters into rxe_pool RDMA/rxe: Save object pointer in pool element RDMA/rxe: Combine rxe_add_index with rxe_alloc RDMA/rxe: Combine rxe_add_key with rxe_alloc RDMA/rxe: Separate out last rxe_drop_ref RDMA/rxe: Rewrite rxe_mcast.c RDMA/rxe: Fix ref error in rxe_av.c RDMA/rxe: Replace mr by rkey in responder resources RDMA/rxe: Minor cleanup in rxe_pool.c drivers/infiniband/sw/rxe/rxe.c | 8 - drivers/infiniband/sw/rxe/rxe.h | 1 + drivers/infiniband/sw/rxe/rxe_av.c | 24 +- drivers/infiniband/sw/rxe/rxe_cq.c | 9 +- drivers/infiniband/sw/rxe/rxe_loc.h | 19 +- drivers/infiniband/sw/rxe/rxe_mcast.c | 210 ++++++++----- drivers/infiniband/sw/rxe/rxe_mr.c | 11 +- drivers/infiniband/sw/rxe/rxe_mw.c | 28 +- drivers/infiniband/sw/rxe/rxe_net.c | 39 +-- drivers/infiniband/sw/rxe/rxe_pool.c | 408 +++++++++++++++++--------- drivers/infiniband/sw/rxe/rxe_pool.h | 84 +++--- drivers/infiniband/sw/rxe/rxe_qp.c | 10 +- drivers/infiniband/sw/rxe/rxe_req.c | 55 ++-- drivers/infiniband/sw/rxe/rxe_resp.c | 125 +++++--- drivers/infiniband/sw/rxe/rxe_srq.c | 8 + drivers/infiniband/sw/rxe/rxe_verbs.c | 67 ++--- drivers/infiniband/sw/rxe/rxe_verbs.h | 4 +- 17 files changed, 653 insertions(+), 457 deletions(-) -- 2.30.2