nvmf: ctrlr_create - fix missing free qpair_mask on error
This patch fixes missing free of qpair_mask when a listener error occurs in ctrlr_create. Signed-off-by: Jonas Pfefferle <pepperjo@japf.ch> Change-Id: I09162b86d8ac73bf9fc2006a08dcc0a955f222b3 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7818 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
parent
e8fc521f7d
commit
19faf91293
@ -336,8 +336,7 @@ nvmf_ctrlr_create(struct spdk_nvmf_subsystem *subsystem,
|
|||||||
ctrlr->qpair_mask = spdk_bit_array_create(transport->opts.max_qpairs_per_ctrlr);
|
ctrlr->qpair_mask = spdk_bit_array_create(transport->opts.max_qpairs_per_ctrlr);
|
||||||
if (!ctrlr->qpair_mask) {
|
if (!ctrlr->qpair_mask) {
|
||||||
SPDK_ERRLOG("Failed to allocate controller qpair mask\n");
|
SPDK_ERRLOG("Failed to allocate controller qpair mask\n");
|
||||||
free(ctrlr);
|
goto err_qpair_mask;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nvmf_ctrlr_cdata_init(transport, subsystem, &ctrlr->cdata);
|
nvmf_ctrlr_cdata_init(transport, subsystem, &ctrlr->cdata);
|
||||||
@ -431,15 +430,13 @@ nvmf_ctrlr_create(struct spdk_nvmf_subsystem *subsystem,
|
|||||||
if (ctrlr->subsys->subtype == SPDK_NVMF_SUBTYPE_NVME) {
|
if (ctrlr->subsys->subtype == SPDK_NVMF_SUBTYPE_NVME) {
|
||||||
if (spdk_nvmf_qpair_get_listen_trid(req->qpair, &listen_trid) != 0) {
|
if (spdk_nvmf_qpair_get_listen_trid(req->qpair, &listen_trid) != 0) {
|
||||||
SPDK_ERRLOG("Could not get listener transport ID\n");
|
SPDK_ERRLOG("Could not get listener transport ID\n");
|
||||||
free(ctrlr);
|
goto err_listener;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ctrlr->listener = nvmf_subsystem_find_listener(ctrlr->subsys, &listen_trid);
|
ctrlr->listener = nvmf_subsystem_find_listener(ctrlr->subsys, &listen_trid);
|
||||||
if (!ctrlr->listener) {
|
if (!ctrlr->listener) {
|
||||||
SPDK_ERRLOG("Listener was not found\n");
|
SPDK_ERRLOG("Listener was not found\n");
|
||||||
free(ctrlr);
|
goto err_listener;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -447,6 +444,11 @@ nvmf_ctrlr_create(struct spdk_nvmf_subsystem *subsystem,
|
|||||||
spdk_thread_send_msg(subsystem->thread, _nvmf_subsystem_add_ctrlr, req);
|
spdk_thread_send_msg(subsystem->thread, _nvmf_subsystem_add_ctrlr, req);
|
||||||
|
|
||||||
return ctrlr;
|
return ctrlr;
|
||||||
|
err_listener:
|
||||||
|
spdk_bit_array_free(&ctrlr->qpair_mask);
|
||||||
|
err_qpair_mask:
|
||||||
|
free(ctrlr);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user