Poll group holds lists of qpairs in different states and when we got rdma completion with error, we iterate these lists to find a qpair which qp_num matches. qp_num is stored inside of ibv_qp which belongs to spdk_rdma_qp structure. When nvme_rdma_qpair is disconnected, pointer to spdk_rdma_qp is cleaned but qpair may still exist in poll group list and when we start searhing for qpair by qp_num we may dereference NULL pointer. This patch adds a check that pointer to spdk_rdma_qp is valid before dereferencing it. To minimize boilerplate code, wrap all check in macro. Add unit test to verify this fix. Signed-off-by: Alexey Marchuk <alexeymar@mellanox.com> Change-Id: I1925f93efb633fd5c176323d3bbd3641a1a632a9 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9050 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> |
||
---|---|---|
.. | ||
Makefile | ||
nvme_rdma_ut.c |