Re: [PATCH] nvme-core: don't initlialize ctrl->cntlid twice

From: Keith Busch
Date: Tue Jan 08 2019 - 10:41:34 EST


On Mon, Jan 07, 2019 at 07:08:49PM -0800, Andrey Smirnov wrote:
> ctrl->cntlid will already be initialized from id->cntlid for
> non-NVME_F_FABRICS controllers few lines below. For NVME_F_FABRICS
> controllers this field should already be initialized, otherwise the
> check
>
> if (ctrl->cntlid != le16_to_cpu(id->cntlid))
>
> below will always be a no-op.

Yeah, this bug defeats the fabrics sanity check. Good catch.

Reviewed-by: Keith Busch <keith.busch@xxxxxxxxx>

> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index 2e65be8b1387..1ec87b30fad1 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -2397,7 +2397,6 @@ int nvme_init_identify(struct nvme_ctrl *ctrl)
> ctrl->oaes = le32_to_cpu(id->oaes);
> atomic_set(&ctrl->abort_limit, id->acl + 1);
> ctrl->vwc = id->vwc;
> - ctrl->cntlid = le16_to_cpup(&id->cntlid);
> if (id->mdts)
> max_hw_sectors = 1 << (id->mdts + page_shift - 9);
> else
> --