From b8b8cd013327327e757529a0725a8c754c7890e3 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Mon, 28 Sep 2020 12:33:19 +0200 Subject: [PATCH] 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 Reviewed-by: Keith Busch Reviewed-by: Chaitanya Kulkarni Reviewed-by: Sagi Grimberg --- drivers/nvme/host/core.c | 17 ++++++++--------- 1 file 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; -- 2.20.1