Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp305645ybi; Thu, 1 Aug 2019 19:29:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqxLBW/UKK4388JgEd9/F5lzi7oDb8jN+/vLm/EYc7XgUFKexnG0airLgZ8T4k1YXUREWLOb X-Received: by 2002:a63:481c:: with SMTP id v28mr9790011pga.50.1564712988347; Thu, 01 Aug 2019 19:29:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564712988; cv=none; d=google.com; s=arc-20160816; b=ARSRPKcnpBhSyCtKx+q7S48b+hfroe3PgOEOdKx0S1kjUmNrolJSxmfQSZba7dNDhd 2QX8CK9fJ+lv7UTYlVlfVDfYjiHEt+U3Otivr6G0UnNes90s4O5yMyJ5dhK4EN2x1eld V67nyf+Td2NuJ7vxgSw4OmGrI3vg2KsF6lTJCP28JedcdBagPKxhTeMtc0bXHVXyjvl/ lsdxImIyiS1R460QcY4Xz3zG9UQgqlW1EWNfD3rrLfVgjC9rtbCCZ1r98C7ia6E+rysM foU0UWxAdNtex/AkC0c2giNKrdyQgDu+vU404mvP3jU+uWiTVttFWeFZMQIZC4wO+z6m 1jCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:subject:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:cc:to:from; bh=xh3RtXdmTZkUCGY9yk0VjZcVsXdCAm2cKNPf1ms2Cnc=; b=ghxWCORYxRS22UnB63Mn9ApuaO8LeNv3hEaU+QkEKlYEN7PFU7yYqCwNXtLyRA98DS gOtHRbBOsqe2jgDIRpLrIiZXhUBkgSGQqBPkqdflQ2tsYVoQbSr2jvkRc4XU9Dinvm5l mM43C39t48dnFZTM/NyCoYrc3LxUIpHcqr8HPVDqazdrGtsNbY+IOuLv3CruT/C8ibu1 DsM0KH7fX9bsGg7Ihz+p+1EkQ6ek2+PtPKQRUoBjfF4loPj66R2q/IG3x4ArMhdnZp1j FgA2ycEu4XBBJ02VrKR+uW5KoJOhiNT8OmThOfIpMqLfjiWmpXTEiHjElyJZYfpt80/t iSsA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g190si3117616pgc.375.2019.08.01.19.29.25; Thu, 01 Aug 2019 19:29:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403784AbfHAXpk (ORCPT + 99 others); Thu, 1 Aug 2019 19:45:40 -0400 Received: from ale.deltatee.com ([207.54.116.67]:33036 "EHLO ale.deltatee.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390419AbfHAXpZ (ORCPT ); Thu, 1 Aug 2019 19:45:25 -0400 Received: from cgy1-donard.priv.deltatee.com ([172.16.1.31]) by ale.deltatee.com with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1htKl2-0002MH-Od; Thu, 01 Aug 2019 17:45:24 -0600 Received: from gunthorp by cgy1-donard.priv.deltatee.com with local (Exim 4.89) (envelope-from ) id 1htKl2-00025R-80; Thu, 01 Aug 2019 17:45:16 -0600 From: Logan Gunthorpe To: linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org Cc: Christoph Hellwig , Sagi Grimberg , Keith Busch , Jens Axboe , Chaitanya Kulkarni , Max Gurtovoy , Stephen Bates , Chaitanya Kulkarni , Logan Gunthorpe Date: Thu, 1 Aug 2019 17:45:08 -0600 Message-Id: <20190801234514.7941-10-logang@deltatee.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190801234514.7941-1-logang@deltatee.com> References: <20190801234514.7941-1-logang@deltatee.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 172.16.1.31 X-SA-Exim-Rcpt-To: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, hch@lst.de, sagi@grimberg.me, kbusch@kernel.org, axboe@fb.com, maxg@mellanox.com, sbates@raithlin.com, Chaitanya.Kulkarni@wdc.com, chaitanya.kulkarni@wdc.com, logang@deltatee.com X-SA-Exim-Mail-From: gunthorp@deltatee.com X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on ale.deltatee.com X-Spam-Level: X-Spam-Status: No, score=-8.7 required=5.0 tests=ALL_TRUSTED,BAYES_00, GREYLIST_ISWHITE,MYRULES_NO_TEXT autolearn=ham autolearn_force=no version=3.4.2 Subject: [PATCH v7 09/14] nvmet-core: don't check the data len for pt-ctrl X-SA-Exim-Version: 4.2.1 (built Tue, 02 Aug 2016 21:08:31 +0000) X-SA-Exim-Scanned: Yes (on ale.deltatee.com) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chaitanya Kulkarni Right now, data_len is calculated before the transfer len after we parse the command, With passthru interface we allow VUCs (Vendor-Unique Commands). In order to make the code simple and compact, instead of assigning the data len or each VUC in the command parse function just use the transfer len as it is. This may result in error if expected data_len != transfer_len. Signed-off-by: Chaitanya Kulkarni [logang@deltatee.com: * added definition of VUC to the commit message and comment * use nvmet_req_passthru_ctrl() helper seeing we can't dereference subsys->passthru_ctrl if CONFIG_NVME_TARGET_PASSTHRU is not set] Signed-off-by: Logan Gunthorpe --- drivers/nvme/target/core.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c index c655f26db3da..1cda94437fbf 100644 --- a/drivers/nvme/target/core.c +++ b/drivers/nvme/target/core.c @@ -941,7 +941,16 @@ EXPORT_SYMBOL_GPL(nvmet_req_uninit); void nvmet_req_execute(struct nvmet_req *req) { - if (unlikely(req->data_len != req->transfer_len)) { + /* + * data_len is calculated before the transfer len after we parse + * the command, With passthru interface we allow VUC (Vendor-Unique + * Commands)'s. In order to make the code simple and compact, + * instead of assinging the dala len for each VUC in the command + * parse function just use the transfer len as it is. This may + * result in error if expected data_len != transfer_len. + */ + if (!(req->sq->ctrl && nvmet_req_passthru_ctrl(req)) && + unlikely(req->data_len != req->transfer_len)) { req->error_loc = offsetof(struct nvme_common_command, dptr); nvmet_req_complete(req, NVME_SC_SGL_INVALID_DATA | NVME_SC_DNR); } else -- 2.20.1