linux/drivers/nvme/host
Sagi Grimberg e371af033c nvme-tcp: fix incorrect h2cdata pdu offset accounting
When the controller sends us multiple r2t PDUs in a single
request we need to account for it correctly as our send/recv
context run concurrently (i.e. we get a new r2t with r2t_offset
before we updated our iterator and req->data_sent marker). This
can cause wrong offsets to be sent to the controller.

To fix that, we will first know that this may happen only in
the send sequence of the last page, hence we will take
the r2t_offset to the h2c PDU data_offset, and in
nvme_tcp_try_send_data loop, we make sure to increment
the request markers also when we completed a PDU but
we are expecting more r2t PDUs as we still did not send
the entire data of the request.

Fixes: 825619b09a ("nvme-tcp: fix possible use-after-completion")
Reported-by: Nowak, Lukasz <Lukasz.Nowak@Dell.com>
Tested-by: Nowak, Lukasz <Lukasz.Nowak@Dell.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2021-09-21 09:17:15 +02:00
..
core.c nvme fixes for Linux 5.15 2021-09-15 07:53:32 -06:00
fabrics.c nvme-fabrics: remove superfluous nvmf_host_put in nvmf_parse_options 2021-08-16 14:42:23 +02:00
fabrics.h nvme: use blk_execute_rq() for passthrough commands 2021-06-30 15:35:38 -06:00
fault_inject.c nvme: enable to inject errors into admin commands 2019-06-21 11:15:50 +02:00
fc.c nvme-fc: remove freeze/unfreeze around update_nr_hw_queues 2021-09-21 09:17:12 +02:00
fc.h nvme-fc: Update header and host for common definitions for LS handling 2020-05-09 16:18:33 -06:00
hwmon.c nvme-hwmon: Return error code when registration fails 2021-03-05 13:41:03 +01:00
ioctl.c remove the lightnvm subsystem 2021-08-14 15:54:09 -06:00
Kconfig nvme: Have NVME_FABRICS select NVME_CORE instead of transport drivers 2021-08-16 21:03:18 +02:00
Makefile remove the lightnvm subsystem 2021-08-14 15:54:09 -06:00
multipath.c nvme-multipath: fix ANA state updates when a namespace is not present 2021-09-14 10:32:04 +02:00
nvme.h nvme: move nvme_multi_css into nvme.h 2021-09-06 09:59:02 +02:00
pci.c nvme: allow user toggling hmb usage 2021-08-16 14:42:24 +02:00
rdma.c nvme-rdma: destroy cm id before destroy qp to avoid use after free 2021-09-14 10:32:04 +02:00
tcp.c nvme-tcp: fix incorrect h2cdata pdu offset accounting 2021-09-21 09:17:15 +02:00
trace.c nvme: add set feature tracing support 2021-08-16 14:42:23 +02:00
trace.h nvme: fix nvme_setup_command metadata trace event 2021-07-21 09:55:44 +02:00
zns.c nvme: split nvme_report_zones 2021-06-03 10:29:26 +03:00