From 3abcc849df96847e752137f9a0f6cf5784e8e6ce Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Sun, 8 Jan 2017 21:45:39 +0000 Subject: [PATCH] ib_srpt: Destroy SRQ before freeing the buffers posted on the SRQ git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7088 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- srpt/src/ib_srpt.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/srpt/src/ib_srpt.c b/srpt/src/ib_srpt.c index 4bfe718d4..3f2acf56e 100644 --- a/srpt/src/ib_srpt.c +++ b/srpt/src/ib_srpt.c @@ -4478,11 +4478,11 @@ out: err_cm: ib_destroy_cm_id(sdev->cm_id); err_ring: + if (sdev->use_srq) + ib_destroy_srq(sdev->srq); srpt_free_ioctx_ring((struct srpt_ioctx **)sdev->ioctx_ring, sdev, sdev->srq_size, srp_max_req_size, DMA_FROM_DEVICE); - if (sdev->use_srq) - ib_destroy_srq(sdev->srq); err_mr: #ifndef IB_PD_HAS_LOCAL_DMA_LKEY ib_dereg_mr(sdev->mr); @@ -4553,12 +4553,10 @@ static void srpt_remove_one(struct ib_device *device, void *client_data) } } - srpt_free_ioctx_ring((struct srpt_ioctx **)sdev->ioctx_ring, sdev, - sdev->srq_size, srp_max_req_size, DMA_FROM_DEVICE); - sdev->ioctx_ring = NULL; - if (sdev->use_srq) ib_destroy_srq(sdev->srq); + srpt_free_ioctx_ring((struct srpt_ioctx **)sdev->ioctx_ring, sdev, + sdev->srq_size, srp_max_req_size, DMA_FROM_DEVICE); #ifndef IB_PD_HAS_LOCAL_DMA_LKEY ib_dereg_mr(sdev->mr); #endif