From 2b3abb2a339cfb1033108808ffa7577b860cca09 Mon Sep 17 00:00:00 2001 From: wuzhouhui Date: Thu, 2 Aug 2018 16:48:06 +0800 Subject: [PATCH] bdev/nvme: fix error path on nvme bdev creation Change-Id: Ia30994f3dc8d388a078be9f116ea221b157158ba Signed-off-by: wuzhouhui Reviewed-on: https://review.gerrithub.io/421080 Reviewed-by: Dariusz Stojaczyk Reviewed-by: Ben Walker Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins Chandler-Test-Pool: SPDK Automated Test System --- lib/bdev/nvme/bdev_nvme.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/bdev/nvme/bdev_nvme.c b/lib/bdev/nvme/bdev_nvme.c index d95242b8f..53b62d666 100644 --- a/lib/bdev/nvme/bdev_nvme.c +++ b/lib/bdev/nvme/bdev_nvme.c @@ -716,6 +716,8 @@ nvme_ctrlr_create_bdev(struct nvme_ctrlr *nvme_ctrlr, uint32_t nsid) bdev->disk.name = spdk_sprintf_alloc("%sn%d", nvme_ctrlr->name, spdk_nvme_ns_get_id(ns)); if (!bdev->disk.name) { + nvme_ctrlr->ref--; + memset(bdev, 0, sizeof(*bdev)); return -ENOMEM; } bdev->disk.product_name = "NVMe disk"; @@ -740,6 +742,7 @@ nvme_ctrlr_create_bdev(struct nvme_ctrlr *nvme_ctrlr, uint32_t nsid) rc = spdk_bdev_register(&bdev->disk); if (rc) { free(bdev->disk.name); + nvme_ctrlr->ref--; memset(bdev, 0, sizeof(*bdev)); return rc; }