Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp11171547ybi; Thu, 25 Jul 2019 11:12:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqwaPCTqTwg7Fho/2ZXLjIyjn0PHogg5AjqxZlbrfC8x0dlc6Ui5TT1YL1rsyUeS8YtGmXHr X-Received: by 2002:a63:69c1:: with SMTP id e184mr84458082pgc.198.1564078371775; Thu, 25 Jul 2019 11:12:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564078371; cv=none; d=google.com; s=arc-20160816; b=qWcUh+lqorDwV68Fo3hxNeCk0DCvfkCqmRXLJhdkAJ/1/4m7I3M4hAFakvlik/s9Ue /HU8BZ7FcjF/R2uAd5umNs3W+UZHln2Ht0s0hH0xAP7gDmE8JT1N2d0HoOBA/dJquPr1 V79kddAZ0egbetGq3YPWYtGKeNik9+wmKk/qcEZUwmx5XZpQLEZ4F7bpQzVHni9068jo 2xw1l2mMFLnBfgwmeK4Eh8eFhDqsrySN0yBLwBe9To7zpV5sXhWdrcb7ixfJs7n7CTjR /WrGdYJQW3bEOxkArBmyO/IHkBFFXuk7P8uoc4eEUPplp8f3Fl9bW5kqnvGuYbZJgjRO ztKA== 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=rZyJMsEurBDVkqsQLhwshBUKTUov42VTXW9zCDX9KHo=; b=mJedvfALDUWUhEy0ol45iWxdJh11zGFz9Otop58RTmZ+I5jH7kX+mWGvi9lPbaprsu HdQO/lmEOcaES8FPEFGh65VOr3mtDiSuKLrJct2nWKtt1byHWEEAdeqiAcK39r4jwg82 H6vFnlOzSwmK1X5s7vExJAiQRoXo8QwJHO2DE6Np3owMttgA0prZt94MpBgTVJDM5hrC uYEjabvOPnM1sx76XaphDv34k5oKRS1pXrL9CaXiveyfBxmEk7wA6z5JxnrOSqKMSeFN MtUg9xfqcQl0pZIMaUKV3+g4Rz6CghVo3nn5JPFbKRbt1FXSul30qWMO5TyK9U8Bn3vS hvbw== 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 a19si15270725pjv.47.2019.07.25.11.12.37; Thu, 25 Jul 2019 11:12:51 -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 S2391247AbfGYRYU (ORCPT + 99 others); Thu, 25 Jul 2019 13:24:20 -0400 Received: from ale.deltatee.com ([207.54.116.67]:39736 "EHLO ale.deltatee.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391129AbfGYRXy (ORCPT ); Thu, 25 Jul 2019 13:23:54 -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 1hqhSw-0001Jc-8e; Thu, 25 Jul 2019 11:23:53 -0600 Received: from gunthorp by cgy1-donard.priv.deltatee.com with local (Exim 4.89) (envelope-from ) id 1hqhSw-0001nc-3Q; Thu, 25 Jul 2019 11:23:42 -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, 25 Jul 2019 11:23:31 -0600 Message-Id: <20190725172335.6825-13-logang@deltatee.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190725172335.6825-1-logang@deltatee.com> References: <20190725172335.6825-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 v6 12/16] 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 9e92486e2ee9..77660dfc6c8f 100644 --- a/drivers/nvme/target/core.c +++ b/drivers/nvme/target/core.c @@ -942,7 +942,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