]> git.itanic.dy.fi Git - linux-stable/commitdiff
nvmet-tcp: fix a missing endianess conversion in nvmet_tcp_try_peek_pdu
authorChristoph Hellwig <hch@lst.de>
Tue, 26 Dec 2023 08:13:29 +0000 (08:13 +0000)
committerKeith Busch <kbusch@kernel.org>
Wed, 3 Jan 2024 16:09:40 +0000 (08:09 -0800)
No, a __le32 cast doesn't magically byteswap on big-endian systems..

Fixes: 70525e5d82f6 ("nvmet-tcp: peek icreq before starting TLS")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/target/tcp.c

index 3569c1255c5eb7331f15cf8b9756a7c0a1c42b95..792828fb91ccfc479049f29bef2b2f558620eb8b 100644 (file)
@@ -1778,7 +1778,7 @@ static int nvmet_tcp_try_peek_pdu(struct nvmet_tcp_queue *queue)
                 (int)sizeof(struct nvme_tcp_icreq_pdu));
        if (hdr->type == nvme_tcp_icreq &&
            hdr->hlen == sizeof(struct nvme_tcp_icreq_pdu) &&
-           hdr->plen == (__le32)sizeof(struct nvme_tcp_icreq_pdu)) {
+           hdr->plen == cpu_to_le32(sizeof(struct nvme_tcp_icreq_pdu))) {
                pr_debug("queue %d: icreq detected\n",
                         queue->idx);
                return len;