nvme: handle NULL ioq array in nvme_ctrlr_destruct()

Fix a potential segmentation fault issue.

Change-Id: I39d2cd1850265ca0dfa987995011563cadeb5bb5
Signed-off-by: Cunyin Chang <cunyin.chang@intel.com>
This commit is contained in:
Cunyin Chang 2016-03-23 12:38:40 +08:00 committed by Daniel Verkamp
parent 55d9ff6a66
commit db3fda2e68

View File

@ -397,8 +397,10 @@ nvme_ctrlr_fail(struct spdk_nvme_ctrlr *ctrlr)
ctrlr->is_failed = true;
nvme_qpair_fail(&ctrlr->adminq);
for (i = 0; i < ctrlr->opts.num_io_queues; i++) {
nvme_qpair_fail(&ctrlr->ioq[i]);
if (ctrlr->ioq) {
for (i = 0; i < ctrlr->opts.num_io_queues; i++) {
nvme_qpair_fail(&ctrlr->ioq[i]);
}
}
}
@ -1029,9 +1031,10 @@ nvme_ctrlr_destruct(struct spdk_nvme_ctrlr *ctrlr)
nvme_ctrlr_shutdown(ctrlr);
nvme_ctrlr_destruct_namespaces(ctrlr);
for (i = 0; i < ctrlr->opts.num_io_queues; i++) {
nvme_qpair_destroy(&ctrlr->ioq[i]);
if (ctrlr->ioq) {
for (i = 0; i < ctrlr->opts.num_io_queues; i++) {
nvme_qpair_destroy(&ctrlr->ioq[i]);
}
}
free(ctrlr->ioq);