On Thu, May 23, 2019 at 12:05:39AM -0700, Nirranjan Kirubaharan wrote: > In iw_cxgb4, Added wait in destroy_qp() so that all references to > qp are dereferenced and qp is freed in destroy_qp() itself. > This ensures freeing of all QPs before invocation of > dealloc_ucontext(), which prevents loss of in use qpids stored > in ucontext. > > Signed-off-by: Nirranjan Kirubaharan <nirranjan@xxxxxxxxxxx> > Reviewed-by: Potnuri Bharat Teja <bharat@xxxxxxxxxxx> > --- > v2: > - Used kref instead of qid count. > --- > v3: > - Ensured freeing of qp in destroy_qp() itself. > --- > v4: > - Change c4iw_qp_rem_ref() to use a refcount not kref and trigger > complete() when the refcount goes to 0. > - Move all of queue_qp_free into c4iw_destroy_qp() > --- > v5: > - Used refcount_t instead of atomic_t > --- > drivers/infiniband/hw/cxgb4/iw_cxgb4.h | 4 +-- > drivers/infiniband/hw/cxgb4/qp.c | 48 ++++++++++++---------------------- > 2 files changed, 19 insertions(+), 33 deletions(-) Applied to for-next Thanks, Jason