From f11989385ea5b18a336731805f2add6992bf581c Mon Sep 17 00:00:00 2001 From: Alexey Marchuk Date: Thu, 9 Apr 2020 13:14:41 +0300 Subject: [PATCH] nvme/rdma: Clean pointer to nvme_request That is done to make sure that scenario described in github issue #1292 won't happen Change-Id: Ie2ad001da701e25ef984ae57da850fb84d51b734 Signed-off-by: Alexey Marchuk Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1771 Tested-by: SPDK CI Jenkins Reviewed-by: Reviewed-by: Shuhei Matsumoto Reviewed-by: Ben Walker --- lib/nvme/nvme_rdma.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c index dcb8f98ae..e7167bfc2 100644 --- a/lib/nvme/nvme_rdma.c +++ b/lib/nvme/nvme_rdma.c @@ -271,6 +271,7 @@ static void nvme_rdma_req_put(struct nvme_rdma_qpair *rqpair, struct spdk_nvme_rdma_req *rdma_req) { rdma_req->completion_flags = 0; + rdma_req->req = NULL; TAILQ_REMOVE(&rqpair->outstanding_reqs, rdma_req, link); TAILQ_INSERT_HEAD(&rqpair->free_reqs, rdma_req, link); } @@ -1537,6 +1538,7 @@ nvme_rdma_req_init(struct nvme_rdma_qpair *rqpair, struct nvme_request *req, bool icd_supported; int rc; + assert(rdma_req->req == NULL); rdma_req->req = req; req->cmd.cid = rdma_req->id; payload_type = nvme_payload_type(&req->payload);