[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.