Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp439733ybk; Wed, 13 May 2020 04:15:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy38mIHZnkxTt0AVy+m+rGsmp+is0cpOuG7+c26QChwfaxfvNpJKHPeGDIjY9UwMORPhHbW X-Received: by 2002:a17:906:3cd:: with SMTP id c13mr6613787eja.153.1589368540101; Wed, 13 May 2020 04:15:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589368540; cv=none; d=google.com; s=arc-20160816; b=rvBQomTf/ol46qDxKRqfzRw0XEQt8LZisKJeQcCUed/lurUqEytxAYLtsZkH76q0Bh bmE5aprk9wi5zcdcmCbmfuaJJLncVllLfraZnIFtDGOPAAGFWAxEq+IaEM1rZAmsQXZj QebXfkdE1Fk3IZlgKg9PaKVnyFuvdQdoqnM1yxxLSaAiYYzc6DiMOkJLu6CHsNa1Oghz EttuhWRTglmoQUM5aWG7+lcnqY7dCyiQ/AdCMkIIEbqd7sdFfvJwRZ/o2juqubXQ3WJu 57VvVJmsPx7nx0lVzqN0brPh9Qx8ICX1lrzAyCcF7J+6hrQiUlLYeKymS044kgc7aIRK SpFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=feaAiekpmraga480MPwTb4mI5cx3dcv0DA+DGN1ODOc=; b=EsffogRTM2A/iGuKbugeIm4dNXC4Kif0bXu1SnD7nWDIFvgDnU/9tt3jUGlJw4vVDi rj7pqBSqykroV9UxFgjYiFPpPrNzQDLLQiDd0d9YFkp1oE2yhMQikNHVgHAqbwI+9/3s 71V9nXnvwy7n36mfX2pBEJj8tLNzhAAzS9rX5E9tQl50ZjKGLh7RHTeicjQFrVF4hZ7E /St37dgikwDEaQMMekZbfsCu0J6fUlni1yZDep3fbmBIJCXfyuB7NIDGKzejBQD1hWvt 9MVAKA1b55fZRnAV5qgCkbCJ9voa1A8FPyfgYSIoHrNHkirdbcB7hqKKQFGtId1y32E7 R59w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=OQdUUQoS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dk20si1432467ejb.53.2020.05.13.04.15.17; Wed, 13 May 2020 04:15:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=OQdUUQoS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387816AbgEMJwi (ORCPT + 99 others); Wed, 13 May 2020 05:52:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:54026 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732718AbgEMJwd (ORCPT ); Wed, 13 May 2020 05:52:33 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id CE50620740; Wed, 13 May 2020 09:52:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589363553; bh=997yCqMNX4KxpweHvk3j8zDPvvDW9cjqo7KuuBv9lxM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OQdUUQoSji4Cdk8CQQ9frpGl5LSCHue2PEi0hyCQrTvdU6nmACKXipDjVk74maRCI NnTd/W7XZth/VobqO/ygNROzzlJNz7Opt4SHbQ+xWlB61vMgL3WzA2xUHMD1jIfNhv ykrYV5iuW+uJ2+fQbbkcALMPczG/p/n9dYe0mWtI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Christoph Hellwig , Keith Busch , Sasha Levin Subject: [PATCH 5.6 009/118] nvme: refactor nvme_identify_ns_descs error handling Date: Wed, 13 May 2020 11:43:48 +0200 Message-Id: <20200513094418.481181484@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200513094417.618129545@linuxfoundation.org> References: <20200513094417.618129545@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Christoph Hellwig [ Upstream commit fb314eb0cbb2e11540d1ae1a7b28346397f621ef ] Move the handling of an error into the function from the caller, and only do it for an actual error on the admin command itself, not the command parsing, as that should be enough to deal with devices claiming a bogus version compliance. Signed-off-by: Christoph Hellwig Signed-off-by: Keith Busch Signed-off-by: Sasha Levin --- drivers/nvme/host/core.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index fb4c35a430650..545e9e5f1b737 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -1075,8 +1075,17 @@ static int nvme_identify_ns_descs(struct nvme_ctrl *ctrl, unsigned nsid, status = nvme_submit_sync_cmd(ctrl->admin_q, &c, data, NVME_IDENTIFY_DATA_SIZE); - if (status) + if (status) { + dev_warn(ctrl->device, + "Identify Descriptors failed (%d)\n", status); + /* + * Don't treat an error as fatal, as we potentially already + * have a NGUID or EUI-64. + */ + if (status > 0) + status = 0; goto free_data; + } for (pos = 0; pos < NVME_IDENTIFY_DATA_SIZE; pos += len) { struct nvme_ns_id_desc *cur = data + pos; @@ -1734,26 +1743,15 @@ static void nvme_config_write_zeroes(struct gendisk *disk, struct nvme_ns *ns) static int nvme_report_ns_ids(struct nvme_ctrl *ctrl, unsigned int nsid, struct nvme_id_ns *id, struct nvme_ns_ids *ids) { - int ret = 0; - memset(ids, 0, sizeof(*ids)); if (ctrl->vs >= NVME_VS(1, 1, 0)) memcpy(ids->eui64, id->eui64, sizeof(id->eui64)); if (ctrl->vs >= NVME_VS(1, 2, 0)) memcpy(ids->nguid, id->nguid, sizeof(id->nguid)); - if (ctrl->vs >= NVME_VS(1, 3, 0)) { - /* Don't treat error as fatal we potentially - * already have a NGUID or EUI-64 - */ - ret = nvme_identify_ns_descs(ctrl, nsid, ids); - if (ret) - dev_warn(ctrl->device, - "Identify Descriptors failed (%d)\n", ret); - if (ret > 0) - ret = 0; - } - return ret; + if (ctrl->vs >= NVME_VS(1, 3, 0)) + return nvme_identify_ns_descs(ctrl, nsid, ids); + return 0; } static bool nvme_ns_ids_valid(struct nvme_ns_ids *ids) -- 2.20.1