diff options
| author | Andrea Parri <parri.andrea@gmail.com> | 2026-10-22 15:29:32 +0200 |
|---|---|---|
| committer | Keith Busch <kbusch@kernel.org> | 2026-10-28 08:11:20 -0700 |
| commit | 46ed7310a60029826eedb01081a4556643ed5f3b (patch) | |
| tree | 90db23af0e7ed829e880a0150245a46ed50e713f /tools/lib/python/kdoc/python_version.py | |
| parent | 12740bec646dafe009a7d9a4d22d3495ef1ea5cd (diff) | |
nvmet: pci-epf: report transport errors in command completions
When the PCI endpoint target fails a command itself, the host receives a
successful completion. This happens for a data length above MDTS,
malformed PRPs or SGLs, a buffer allocation failure, an SQ that is not
live, and a failed DMA of the command data. A write whose data cannot be
fetched from the host is thus reported as written, though nothing was
executed.
Each of these paths sets iod->status and calls
nvmet_pci_epf_complete_iod(), which then reloads iod->status from
iod->cqe.status. The nvmet core only fills that field when it completes
the request, which these paths never do, so it is still zero and
nvmet_pci_epf_cq_work() posts a success status to the host.
Drop the reload. Every path already sets iod->status before completion:
nvmet_pci_epf_queue_response() copies it from the request's CQE, and
the transport error paths set it themselves.
Found by code inspection.
Fixes: 0faa0fe6f90e ("nvmet: New NVMe PCI endpoint function target driver")
Cc: stable@vger.kernel.org
Tested-by: Niklas Cassel <cassel@kernel.org>
Signed-off-by: Andrea Parri <parri.andrea@gmail.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Diffstat (limited to 'tools/lib/python/kdoc/python_version.py')
0 files changed, 0 insertions, 0 deletions
