From 34d98213ef6f7529263fe5ab5f9ddf5fb11f98df Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Wed, 14 Dec 2016 16:33:35 +0100 Subject: [PATCH] ib_srpt: Destroy SRQ before freeing the buffers posted on the SRQ --- 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 3b123cd51..50863460a 100644 --- a/srpt/src/ib_srpt.c +++ b/srpt/src/ib_srpt.c @@ -4484,11 +4484,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: #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) ib_dereg_mr(sdev->mr); @@ -4559,12 +4559,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); #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) ib_dereg_mr(sdev->mr); #endif