]> www.infradead.org Git - linux.git/commit
scsi: lpfc: Revise lpfc_prep_embed_io routine with proper endian macro usages
authorJustin Tee <justin.tee@broadcom.com>
Fri, 28 Jun 2024 17:20:10 +0000 (10:20 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 5 Jul 2024 03:24:52 +0000 (23:24 -0400)
commit8bc7c617642db6d8d20ee671fb6c4513017e7a7e
tree466dc4f462dc5c61f441142389c044d1e2cc8556
parentf65f31ac120bd2c308bf16b18e5ee74445c06446
scsi: lpfc: Revise lpfc_prep_embed_io routine with proper endian macro usages

On big endian architectures, it is possible to run into a memory out of
bounds pointer dereference when FCP targets are zoned.

In lpfc_prep_embed_io, the memcpy(ptr, fcp_cmnd, sgl->sge_len) is
referencing a little endian formatted sgl->sge_len value.  So, the memcpy
can cause big endian systems to crash.

Redefine the *sgl ptr as a struct sli4_sge_le to make it clear that we are
referring to a little endian formatted data structure.  And, update the
routine with proper le32_to_cpu macro usages.

Fixes: af20bb73ac25 ("scsi: lpfc: Add support for 32 byte CDBs")
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Link: https://lore.kernel.org/r/20240628172011.25921-8-justintee8345@gmail.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_sli.c