Spdk/lib/nvmf
Alexey Marchuk 7fbda6d916 nvmf/rdma: Fix data_wr_pool corruption
When there are not enought transport buffers for
multi SGL request in state NEED_BUFFER, WRs
received from the data_wr_pool are returned back
to the pool. However rdma_req->data.wr.next pointer
still points to the first WR from the pool. Usually
it doesn't cause any problems since rdma_req will
try to fill buffers again, but when qpair is being
destroyed, all requests are completed forcefully.
When the request is completed and data.wr.next
pointer is not NULL, we'll try to put already
released WRs into the pool one more time.
That corrupts the pool and leads to undefined
behavior.

Fixes #2541

Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com>
Change-Id: I238b92eec132d8d845330362af6f335421177454
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13760
Reviewed-by: Michael Haeuptle <michaelhaeuptle@gmail.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2022-07-28 07:12:43 +00:00
..
ctrlr_bdev.c nvmf: don't report E2E Protection Capabilities to client 2022-07-19 12:31:59 +00:00
ctrlr_discovery.c Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
ctrlr.c nvmf: decrement mgmt_io_outstanding for all AER cases 2022-07-15 12:51:31 +00:00
fc_ls.c check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
fc.c check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
Makefile libvfio-user: compile shared library based on CONFIG_SHARED flag 2022-06-23 07:43:26 +00:00
nvmf_fc.h check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
nvmf_internal.h lib/nvmf: rm nvmf_poll_group_add_transport from internal header 2022-07-18 10:18:19 +00:00
nvmf_rpc.c check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
nvmf.c lib/nvmf: rm nvmf_poll_group_add_transport from internal header 2022-07-18 10:18:19 +00:00
rdma.c nvmf/rdma: Fix data_wr_pool corruption 2022-07-28 07:12:43 +00:00
spdk_nvmf.map lib/nvmf : Added support for ZCOPY 2021-07-23 08:34:43 +00:00
subsystem.c nvmf: check interleaved metadata size when adding NS 2022-07-19 12:31:59 +00:00
tcp.c lib/nvmf: use DSA to offload recv data digest crc32 in nvmf-TCP 2022-07-27 08:39:35 +00:00
transport.c check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
transport.h Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
vfio_user.c nvmf/vfio-user: briefly explain live migration 2022-07-11 07:38:04 +00:00