Commit 0bc17251 authored by Arun Easi's avatar Arun Easi Committed by Martin K. Petersen

scsi: qla2xxx: Fix flash update in 28XX adapters on big endian machines

Flash update failed due to missing endian conversion in FLT region access
as well as in checksum computation.

Link: https://lore.kernel.org/r/20201202132312.19966-12-njavali@marvell.comReviewed-by: default avatarHimanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: default avatarArun Easi <aeasi@marvell.com>
Signed-off-by: default avatarNilesh Javali <njavali@marvell.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent f795f96e
...@@ -2634,14 +2634,14 @@ qla28xx_extract_sfub_and_verify(struct scsi_qla_host *vha, uint32_t *buf, ...@@ -2634,14 +2634,14 @@ qla28xx_extract_sfub_and_verify(struct scsi_qla_host *vha, uint32_t *buf,
sizeof(struct secure_flash_update_block)); sizeof(struct secure_flash_update_block));
for (i = 0; i < (sizeof(struct secure_flash_update_block) >> 2); i++) for (i = 0; i < (sizeof(struct secure_flash_update_block) >> 2); i++)
check_sum += p[i]; check_sum += le32_to_cpu(p[i]);
check_sum = (~check_sum) + 1; check_sum = (~check_sum) + 1;
if (check_sum != p[i]) { if (check_sum != le32_to_cpu(p[i])) {
ql_log(ql_log_warn, vha, 0x7097, ql_log(ql_log_warn, vha, 0x7097,
"SFUB checksum failed, 0x%x, 0x%x\n", "SFUB checksum failed, 0x%x, 0x%x\n",
check_sum, p[i]); check_sum, le32_to_cpu(p[i]));
return QLA_COMMAND_ERROR; return QLA_COMMAND_ERROR;
} }
...@@ -2721,7 +2721,7 @@ qla28xx_write_flash_data(scsi_qla_host_t *vha, uint32_t *dwptr, uint32_t faddr, ...@@ -2721,7 +2721,7 @@ qla28xx_write_flash_data(scsi_qla_host_t *vha, uint32_t *dwptr, uint32_t faddr,
if (ha->flags.secure_adapter && region.attribute) { if (ha->flags.secure_adapter && region.attribute) {
ql_log(ql_log_warn + ql_dbg_verbose, vha, 0xffff, ql_log(ql_log_warn + ql_dbg_verbose, vha, 0xffff,
"Region %x is secure\n", region.code); "Region %x is secure\n", le16_to_cpu(region.code));
switch (le16_to_cpu(region.code)) { switch (le16_to_cpu(region.code)) {
case FLT_REG_FW: case FLT_REG_FW:
...@@ -2775,7 +2775,7 @@ qla28xx_write_flash_data(scsi_qla_host_t *vha, uint32_t *dwptr, uint32_t faddr, ...@@ -2775,7 +2775,7 @@ qla28xx_write_flash_data(scsi_qla_host_t *vha, uint32_t *dwptr, uint32_t faddr,
default: default:
ql_log(ql_log_warn + ql_dbg_verbose, vha, ql_log(ql_log_warn + ql_dbg_verbose, vha,
0xffff, "Secure region %x not supported\n", 0xffff, "Secure region %x not supported\n",
region.code); le16_to_cpu(region.code));
rval = QLA_COMMAND_ERROR; rval = QLA_COMMAND_ERROR;
goto done; goto done;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment