summaryrefslogtreecommitdiff
path: root/drivers/nvme
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2020-09-28 12:33:19 +0200
committerChristoph Hellwig <hch@lst.de>2020-10-07 07:56:18 +0200
commitb8b8cd013327327e757529a0725a8c754c7890e3 (patch)
tree35ff1c4c04b746dcd2e36c9d6475f27ff1aab633 /drivers/nvme
parent81382f1730d24a60e2b0499592e64e6e640b1871 (diff)
nvme: lift the check for an unallocated namespace into nvme_identify_ns
Move the check from the two callers into the common helper. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Keith Busch <kbusch@kernel.org> Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Diffstat (limited to 'drivers/nvme')
-rw-r--r--drivers/nvme/host/core.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index fede487f6e04..7b1423c7e7fc 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -1381,9 +1381,16 @@ static int nvme_identify_ns(struct nvme_ctrl *ctrl,
error = nvme_submit_sync_cmd(ctrl->admin_q, &c, *id, sizeof(**id));
if (error) {
dev_warn(ctrl->device, "Identify namespace failed (%d)\n", error);
- kfree(*id);
+ goto out_free_id;
}
+ error = -ENODEV;
+ if ((*id)->ncap == 0) /* namespace not allocated or attached */
+ goto out_free_id;
+ return 0;
+
+out_free_id:
+ kfree(*id);
return error;
}
@@ -2169,11 +2176,6 @@ static int nvme_validate_ns(struct nvme_ns *ns)
if (ret)
goto out;
- if (id->ncap == 0) {
- ret = -ENODEV;
- goto free_id;
- }
-
ret = nvme_report_ns_ids(ctrl, ns->head->ns_id, id, &ids);
if (ret)
goto free_id;
@@ -3913,9 +3915,6 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
if (ret)
goto out_free_queue;
- if (id->ncap == 0) /* no namespace (legacy quirk) */
- goto out_free_id;
-
ret = nvme_init_ns_head(ns, nsid, id);
if (ret)
goto out_free_id;