Commit 70683284 authored by Alexey Marchuk's avatar Alexey Marchuk Committed by Tomasz Zawadzki
Browse files

nvmf/rdma: Correctly release WRs from pool



When request is completed abnormally, e.g. by
error event on qpair, remaining_transfer_in_wrs
may point to unprocessed WRs. We must release them
to avoid resources leakage

Fixes issue #3290

Signed-off-by: default avatarAlexey Marchuk <alexeymar@nvidia.com>
Change-Id: I05c25fe4e222e422ccc1ff315a3b22b1066b5390
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22720


Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarMichael Haeuptle <michaelhaeuptle@gmail.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
parent e718d8ca
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -602,6 +602,12 @@ nvmf_rdma_request_free_data(struct spdk_nvmf_rdma_request *rdma_req,

	_nvmf_rdma_request_free_data(rdma_req, rdma_req->transfer_wr, rtransport->data_wr_pool);

	if (rdma_req->remaining_tranfer_in_wrs) {
		_nvmf_rdma_request_free_data(rdma_req, rdma_req->remaining_tranfer_in_wrs,
					     rtransport->data_wr_pool);
		rdma_req->remaining_tranfer_in_wrs = NULL;
	}

	rdma_req->data.wr.next = NULL;
	rdma_req->rsp.wr.next = NULL;
}