diff options
author | Israel Rukshin <israelr@mellanox.com> | 2017-11-13 07:29:40 -0500 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2018-01-08 05:01:58 -0500 |
commit | eca19dc1d84d924544dda0c8d2fd4bb4131affeb (patch) | |
tree | 864d1e994c74c5014b845320ad099cbcc377048e | |
parent | 6fbcde6691b514faa963c60f5537332530f1bf0a (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.c | 4 |
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 | ||
863 | out_remove_ida: | ||
864 | ida_simple_remove(&cntlid_ida, ctrl->cntlid); | ||
863 | out_free_sqs: | 865 | out_free_sqs: |
864 | kfree(ctrl->sqs); | 866 | kfree(ctrl->sqs); |
865 | out_free_cqs: | 867 | out_free_cqs: |