aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIsrael Rukshin <israelr@mellanox.com>2017-11-13 07:29:40 -0500
committerChristoph Hellwig <hch@lst.de>2018-01-08 05:01:58 -0500
commiteca19dc1d84d924544dda0c8d2fd4bb4131affeb (patch)
tree864d1e994c74c5014b845320ad099cbcc377048e
parent6fbcde6691b514faa963c60f5537332530f1bf0a (diff)
nvmet: fix error flow in nvmet_alloc_ctrl()
Remove the allocated id on error. Signed-off-by: Israel Rukshin <israelr@mellanox.com> Reviewed-by: Max Gurtovoy <maxg@mellanox.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r--drivers/nvme/target/core.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
index b54748ad5f48..07eb45d32a7a 100644
--- a/drivers/nvme/target/core.c
+++ b/drivers/nvme/target/core.c
@@ -830,7 +830,7 @@ u16 nvmet_alloc_ctrl(const char *subsysnqn, const char *hostnqn,
830 /* Don't accept keep-alive timeout for discovery controllers */ 830 /* Don't accept keep-alive timeout for discovery controllers */
831 if (kato) { 831 if (kato) {
832 status = NVME_SC_INVALID_FIELD | NVME_SC_DNR; 832 status = NVME_SC_INVALID_FIELD | NVME_SC_DNR;
833 goto out_free_sqs; 833 goto out_remove_ida;
834 } 834 }
835 835
836 /* 836 /*
@@ -860,6 +860,8 @@ u16 nvmet_alloc_ctrl(const char *subsysnqn, const char *hostnqn,
860 *ctrlp = ctrl; 860 *ctrlp = ctrl;
861 return 0; 861 return 0;
862 862
863out_remove_ida:
864 ida_simple_remove(&cntlid_ida, ctrl->cntlid);
863out_free_sqs: 865out_free_sqs:
864 kfree(ctrl->sqs); 866 kfree(ctrl->sqs);
865out_free_cqs: 867out_free_cqs: