Message ID | 20191009192530.13079-10-logang@deltatee.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | nvmet: add target passthru commands support | expand |
On Wed, Oct 09, 2019 at 01:25:26PM -0600, Logan Gunthorpe wrote: > With passthru, the data_len is no longer guaranteed to be set > for all requests. Therefore, we should not check for it to be > non-zero. Instead check if the SGL length is zero and map > when appropriate. > > None of the other transports check data_len which is verified > in core code. > > Signed-off-by: Logan Gunthorpe <logang@deltatee.com> > Reviewed-by: Sagi Grimberg <sagi@grimberg.me> I think the issue here is deeper. Yes, this patch is correct, but nvmet-tcp has another use of req.data_len in nvmet_tcp_handle_req_failure, which looks completely bogus. Please try to audit that as well and send out fixes to the list separately from this series, as both look like potentially serious bugs.
diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c index d535080b781f..1e2d92f818ad 100644 --- a/drivers/nvme/target/tcp.c +++ b/drivers/nvme/target/tcp.c @@ -320,7 +320,7 @@ static int nvmet_tcp_map_data(struct nvmet_tcp_cmd *cmd) struct nvme_sgl_desc *sgl = &cmd->req.cmd->common.dptr.sgl; u32 len = le32_to_cpu(sgl->length); - if (!cmd->req.data_len) + if (!len) return 0; if (sgl->type == ((NVME_SGL_FMT_DATA_DESC << 4) |