nvmf/rdma: check for rdma_get_devices() failure

rdma_get_devices() may return NULL on failure; we need to check for this
before dereferencing the returned pointer.

Fixes GitHub issue #360.

Change-Id: I9628e5865365d256f4b1887bf07ce8737b55d356
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/418868
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Seth Howell <seth.howell5141@gmail.com>
This commit is contained in:
Daniel Verkamp 2018-07-10 09:56:14 -07:00
parent fbb481c2c6
commit 043e5edb1f

View File

@ -1310,6 +1310,15 @@ spdk_nvmf_rdma_create(struct spdk_nvmf_tgt *tgt)
sizeof(struct spdk_nvmf_rdma_mgmt_channel));
contexts = rdma_get_devices(NULL);
if (contexts == NULL) {
SPDK_ERRLOG("rdma_get_devices() failed: %s (%d)\n", spdk_strerror(errno), errno);
rdma_destroy_event_channel(rtransport->event_channel);
spdk_mempool_free(rtransport->data_buf_pool);
spdk_io_device_unregister(rtransport, NULL);
free(rtransport);
return NULL;
}
i = 0;
rc = 0;
while (contexts[i] != NULL) {