From 4f36a2a66b648f19e23f9b6cdadf67386c588bf1 Mon Sep 17 00:00:00 2001 From: Chunsong Feng Date: Thu, 17 Feb 2022 03:16:38 +0000 Subject: [PATCH] nvme/rdma: clear dif_enable when rdma_req is free The dif_enable is not cleared in _nvmf_rdma_request_free. When the rdma_req is used again, the dif_enable is true while dif.dif_ctx->block_size is zero. As a result, an infinite loop occurs in nvmf_rdma_fill_wr_sgl. Fix issue: #2380 Signed-off-by: Chunsong Feng Change-Id: Ic179855f7b257e39ed4a5f6705fbc9dea64210ae Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11646 Reviewed-by: Aleksey Marchuk Reviewed-by: Changpeng Liu Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins Community-CI: Broadcom CI Community-CI: Mellanox Build Bot --- lib/nvmf/rdma.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index cb180de09..8d383940f 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -1846,6 +1846,7 @@ _nvmf_rdma_request_free(struct spdk_nvmf_rdma_request *rdma_req, rdma_req->rsp.wr.next = NULL; rdma_req->data.wr.next = NULL; rdma_req->offset = 0; + rdma_req->req.dif_enabled = false; memset(&rdma_req->req.dif, 0, sizeof(rdma_req->req.dif)); rqpair->qd--;