[PATCH] nvme-tcp: return -EPROTO for a C2HData on a write
Yehyeong Lee <[email protected]>
| Newsgroups | org.infradead.lists.linux-nvme |
|---|---|
| Message-ID | <[email protected]> |
The direction check in nvme_tcp_handle_c2h_data() returns -EIO. A C2HData PDU naming a command that did not ask for data is a protocol violation, and the check that rejects a PDU on those grounds a few lines below it - SUCCESS set without LAST - returns -EPROTO. No caller distinguishes the two, so this changes the error code alone. Suggested-by: Sagi Grimberg <[email protected]> Signed-off-by: Yehyeong Lee <[email protected]> --- Measured on the test target: a write answered with C2HData changes the log line from "receive failed: -5" to "-71", and the neighbouring payload check still reports -5. Three runs each way. Applies on top of "nvme-tcp: check the data direction of a C2HData PDU" in nvme-7.3; squash into it if you prefer. No Fixes: tag because that commit has no upstream hash yet. drivers/nvme/host/tcp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c index a62d6e48f7190..a865bd0688543 100644 --- a/drivers/nvme/host/tcp.c +++ b/drivers/nvme/host/tcp.c @@ -683,7 +683,7 @@ static int nvme_tcp_handle_c2h_data(struct nvme_tcp_queue *queue, dev_err(queue->ctrl->ctrl.device, "queue %d tag %#x unexpected data for a write\n", nvme_tcp_queue_id(queue), rq->tag); - return -EIO; + return -EPROTO; } req = blk_mq_rq_to_pdu(rq); -- 2.43.0