From f20b99bbb3fb9a37784d4249aa03a5ef24b5c96a Mon Sep 17 00:00:00 2001 From: GangCao Date: Mon, 17 Oct 2022 01:56:06 -0400 Subject: [PATCH] lib/nvme/vfio: destruct ctrlr in failed cases Change-Id: Ie7d7ab25055c26ea1c2ae4997bf7197a170de989 Signed-off-by: GangCao Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15005 Tested-by: SPDK CI Jenkins Reviewed-by: Changpeng Liu Reviewed-by: Tomasz Zawadzki --- lib/nvme/nvme_vfio_user.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/nvme/nvme_vfio_user.c b/lib/nvme/nvme_vfio_user.c index 46f2434c5..3f434b06f 100644 --- a/lib/nvme/nvme_vfio_user.c +++ b/lib/nvme/nvme_vfio_user.c @@ -188,6 +188,7 @@ static struct spdk_nvme_ctrlr * ret = spdk_vfio_user_pci_bar_access(vctrlr->dev, VFIO_PCI_CONFIG_REGION_INDEX, 4, 2, &cmd_reg, false); if (ret != 0) { + nvme_ctrlr_destruct(&pctrlr->ctrlr); SPDK_ERRLOG("Read PCI CMD REG failed\n"); goto exit; } @@ -195,11 +196,13 @@ static struct spdk_nvme_ctrlr * ret = spdk_vfio_user_pci_bar_access(vctrlr->dev, VFIO_PCI_CONFIG_REGION_INDEX, 4, 2, &cmd_reg, true); if (ret != 0) { + nvme_ctrlr_destruct(&pctrlr->ctrlr); SPDK_ERRLOG("Write PCI CMD REG failed\n"); goto exit; } if (nvme_ctrlr_get_cap(&pctrlr->ctrlr, &cap)) { + nvme_ctrlr_destruct(&pctrlr->ctrlr); SPDK_ERRLOG("get_cap() failed\n"); goto exit; }