Commit d38cb849 authored by Quinn Tran's avatar Quinn Tran Committed by Martin K. Petersen

scsi: qla2xxx: Fix memory size truncation

Memory size calculations for Extended Login used in hardware offload got
truncated. Fix this by changing definition of exlogin_size to use uint32_t.

Link: https://lore.kernel.org/r/20200904045128.23631-7-njavali@marvell.comReviewed-by: default avatarHimanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: default avatarQuinn Tran <qutran@marvell.com>
Signed-off-by: default avatarNilesh Javali <njavali@marvell.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent d68930ba
...@@ -4216,7 +4216,7 @@ struct qla_hw_data { ...@@ -4216,7 +4216,7 @@ struct qla_hw_data {
/* Extended Logins */ /* Extended Logins */
void *exlogin_buf; void *exlogin_buf;
dma_addr_t exlogin_buf_dma; dma_addr_t exlogin_buf_dma;
int exlogin_size; uint32_t exlogin_size;
#define ENABLE_EXCHANGE_OFFLD BIT_2 #define ENABLE_EXCHANGE_OFFLD BIT_2
......
...@@ -845,7 +845,7 @@ qla_get_exlogin_status(scsi_qla_host_t *vha, uint16_t *buf_sz, ...@@ -845,7 +845,7 @@ qla_get_exlogin_status(scsi_qla_host_t *vha, uint16_t *buf_sz,
* Context: * Context:
* Kernel context. * Kernel context.
*/ */
#define CONFIG_XLOGINS_MEM 0x3 #define CONFIG_XLOGINS_MEM 0x9
int int
qla_set_exlogin_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr) qla_set_exlogin_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr)
{ {
...@@ -872,8 +872,9 @@ qla_set_exlogin_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr) ...@@ -872,8 +872,9 @@ qla_set_exlogin_mem_cfg(scsi_qla_host_t *vha, dma_addr_t phys_addr)
mcp->flags = 0; mcp->flags = 0;
rval = qla2x00_mailbox_command(vha, mcp); rval = qla2x00_mailbox_command(vha, mcp);
if (rval != QLA_SUCCESS) { if (rval != QLA_SUCCESS) {
/*EMPTY*/ ql_dbg(ql_dbg_mbx, vha, 0x111b,
ql_dbg(ql_dbg_mbx, vha, 0x111b, "Failed=%x.\n", rval); "EXlogin Failed=%x. MB0=%x MB11=%x\n",
rval, mcp->mb[0], mcp->mb[11]);
} else { } else {
ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x118c, ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x118c,
"Done %s.\n", __func__); "Done %s.\n", __func__);
......
...@@ -4379,11 +4379,12 @@ int ...@@ -4379,11 +4379,12 @@ int
qla2x00_set_exlogins_buffer(scsi_qla_host_t *vha) qla2x00_set_exlogins_buffer(scsi_qla_host_t *vha)
{ {
int rval; int rval;
uint16_t size, max_cnt, temp; uint16_t size, max_cnt;
uint32_t temp;
struct qla_hw_data *ha = vha->hw; struct qla_hw_data *ha = vha->hw;
/* Return if we don't need to alloacate any extended logins */ /* Return if we don't need to alloacate any extended logins */
if (!ql2xexlogins) if (ql2xexlogins <= MAX_FIBRE_DEVICES_2400)
return QLA_SUCCESS; return QLA_SUCCESS;
if (!IS_EXLOGIN_OFFLD_CAPABLE(ha)) if (!IS_EXLOGIN_OFFLD_CAPABLE(ha))
......
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