diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index d471b6ab7..e875b391f 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -1529,11 +1529,13 @@ nvme_bdev_ctrlr_create(struct spdk_nvme_ctrlr *ctrlr, TAILQ_INIT(&nvme_bdev_ctrlr->trids); nvme_bdev_ctrlr->num_ns = spdk_nvme_ctrlr_get_num_ns(ctrlr); - nvme_bdev_ctrlr->namespaces = calloc(nvme_bdev_ctrlr->num_ns, sizeof(struct nvme_bdev_ns *)); - if (!nvme_bdev_ctrlr->namespaces) { - SPDK_ERRLOG("Failed to allocate block namespaces pointer\n"); - rc = -ENOMEM; - goto err_alloc_namespaces; + if (nvme_bdev_ctrlr->num_ns != 0) { + nvme_bdev_ctrlr->namespaces = calloc(nvme_bdev_ctrlr->num_ns, sizeof(struct nvme_bdev_ns *)); + if (!nvme_bdev_ctrlr->namespaces) { + SPDK_ERRLOG("Failed to allocate block namespaces pointer\n"); + rc = -ENOMEM; + goto err_alloc_namespaces; + } } trid_entry = calloc(1, sizeof(*trid_entry)); diff --git a/module/bdev/nvme/vbdev_opal.c b/module/bdev/nvme/vbdev_opal.c index 1adefd89c..ce71daf37 100644 --- a/module/bdev/nvme/vbdev_opal.c +++ b/module/bdev/nvme/vbdev_opal.c @@ -356,6 +356,7 @@ vbdev_opal_create(const char *nvme_ctrlr_name, uint32_t nsid, uint8_t locking_ra opal_bdev->nvme_ctrlr = nvme_ctrlr; opal_bdev->opal_dev = nvme_ctrlr->opal_dev; + assert(nsid <= nvme_ctrlr->num_ns); nvme_bdev = nvme_bdev_ns_to_bdev(nvme_ctrlr->namespaces[nsid - 1]); assert(nvme_bdev != NULL); base_bdev_name = nvme_bdev->disk.name;