scsi: megaraid: Avoid mismatched storage type sizes
Remove needless use of mbox_t, replacing with just struct mbox_out. Silences compiler warnings under a -Warray-bounds build: drivers/scsi/megaraid.c: In function 'megaraid_probe_one': drivers/scsi/megaraid.c:3615:30: error: array subscript 'mbox_t[0]' is partly outside array bounds of 'unsigned char[15]' [-Werror=array-bounds] 3615 | mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle; | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/megaraid.c:3599:23: note: while referencing 'raw_mbox' 3599 | unsigned char raw_mbox[sizeof(struct mbox_out)]; | ^~~~~~~~ Link: https://lore.kernel.org/r/20220105173633.2421129-1-keescook@chromium.org Cc: Kashyap Desai <kashyap.desai@broadcom.com> Cc: Sumit Saxena <sumit.saxena@broadcom.com> Cc: Shivasharan S <shivasharan.srikanteshwara@broadcom.com> Cc: "James E.J. Bottomley" <jejb@linux.ibm.com> Cc: "Martin K. Petersen" <martin.petersen@oracle.com> Cc: megaraidlinux.pdl@broadcom.com Cc: linux-scsi@vger.kernel.org Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
5d9224fb07
commit
315d049ad1
@ -192,23 +192,21 @@ mega_query_adapter(adapter_t *adapter)
|
||||
{
|
||||
dma_addr_t prod_info_dma_handle;
|
||||
mega_inquiry3 *inquiry3;
|
||||
u8 raw_mbox[sizeof(struct mbox_out)];
|
||||
mbox_t *mbox;
|
||||
struct mbox_out mbox;
|
||||
u8 *raw_mbox = (u8 *)&mbox;
|
||||
int retval;
|
||||
|
||||
/* Initialize adapter inquiry mailbox */
|
||||
|
||||
mbox = (mbox_t *)raw_mbox;
|
||||
|
||||
memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE);
|
||||
memset(&mbox->m_out, 0, sizeof(raw_mbox));
|
||||
memset(&mbox, 0, sizeof(mbox));
|
||||
|
||||
/*
|
||||
* Try to issue Inquiry3 command
|
||||
* if not succeeded, then issue MEGA_MBOXCMD_ADAPTERINQ command and
|
||||
* update enquiry3 structure
|
||||
*/
|
||||
mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle;
|
||||
mbox.xferaddr = (u32)adapter->buf_dma_handle;
|
||||
|
||||
inquiry3 = (mega_inquiry3 *)adapter->mega_buffer;
|
||||
|
||||
@ -232,10 +230,10 @@ mega_query_adapter(adapter_t *adapter)
|
||||
|
||||
inq = &ext_inq->raid_inq;
|
||||
|
||||
mbox->m_out.xferaddr = (u32)dma_handle;
|
||||
mbox.xferaddr = (u32)dma_handle;
|
||||
|
||||
/*issue old 0x04 command to adapter */
|
||||
mbox->m_out.cmd = MEGA_MBOXCMD_ADPEXTINQ;
|
||||
mbox.cmd = MEGA_MBOXCMD_ADPEXTINQ;
|
||||
|
||||
issue_scb_block(adapter, raw_mbox);
|
||||
|
||||
@ -262,7 +260,7 @@ mega_query_adapter(adapter_t *adapter)
|
||||
sizeof(mega_product_info),
|
||||
DMA_FROM_DEVICE);
|
||||
|
||||
mbox->m_out.xferaddr = prod_info_dma_handle;
|
||||
mbox.xferaddr = prod_info_dma_handle;
|
||||
|
||||
raw_mbox[0] = FC_NEW_CONFIG; /* i.e. mbox->cmd=0xA1 */
|
||||
raw_mbox[2] = NC_SUBOP_PRODUCT_INFO; /* i.e. 0x0E */
|
||||
@ -3569,16 +3567,14 @@ mega_n_to_m(void __user *arg, megacmd_t *mc)
|
||||
static int
|
||||
mega_is_bios_enabled(adapter_t *adapter)
|
||||
{
|
||||
unsigned char raw_mbox[sizeof(struct mbox_out)];
|
||||
mbox_t *mbox;
|
||||
struct mbox_out mbox;
|
||||
unsigned char *raw_mbox = (u8 *)&mbox;
|
||||
|
||||
mbox = (mbox_t *)raw_mbox;
|
||||
|
||||
memset(&mbox->m_out, 0, sizeof(raw_mbox));
|
||||
memset(&mbox, 0, sizeof(mbox));
|
||||
|
||||
memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE);
|
||||
|
||||
mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle;
|
||||
mbox.xferaddr = (u32)adapter->buf_dma_handle;
|
||||
|
||||
raw_mbox[0] = IS_BIOS_ENABLED;
|
||||
raw_mbox[2] = GET_BIOS;
|
||||
@ -3600,13 +3596,11 @@ mega_is_bios_enabled(adapter_t *adapter)
|
||||
static void
|
||||
mega_enum_raid_scsi(adapter_t *adapter)
|
||||
{
|
||||
unsigned char raw_mbox[sizeof(struct mbox_out)];
|
||||
mbox_t *mbox;
|
||||
struct mbox_out mbox;
|
||||
unsigned char *raw_mbox = (u8 *)&mbox;
|
||||
int i;
|
||||
|
||||
mbox = (mbox_t *)raw_mbox;
|
||||
|
||||
memset(&mbox->m_out, 0, sizeof(raw_mbox));
|
||||
memset(&mbox, 0, sizeof(mbox));
|
||||
|
||||
/*
|
||||
* issue command to find out what channels are raid/scsi
|
||||
@ -3616,7 +3610,7 @@ mega_enum_raid_scsi(adapter_t *adapter)
|
||||
|
||||
memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE);
|
||||
|
||||
mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle;
|
||||
mbox.xferaddr = (u32)adapter->buf_dma_handle;
|
||||
|
||||
/*
|
||||
* Non-ROMB firmware fail this command, so all channels
|
||||
@ -3655,23 +3649,21 @@ static void
|
||||
mega_get_boot_drv(adapter_t *adapter)
|
||||
{
|
||||
struct private_bios_data *prv_bios_data;
|
||||
unsigned char raw_mbox[sizeof(struct mbox_out)];
|
||||
mbox_t *mbox;
|
||||
struct mbox_out mbox;
|
||||
unsigned char *raw_mbox = (u8 *)&mbox;
|
||||
u16 cksum = 0;
|
||||
u8 *cksum_p;
|
||||
u8 boot_pdrv;
|
||||
int i;
|
||||
|
||||
mbox = (mbox_t *)raw_mbox;
|
||||
|
||||
memset(&mbox->m_out, 0, sizeof(raw_mbox));
|
||||
memset(&mbox, 0, sizeof(mbox));
|
||||
|
||||
raw_mbox[0] = BIOS_PVT_DATA;
|
||||
raw_mbox[2] = GET_BIOS_PVT_DATA;
|
||||
|
||||
memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE);
|
||||
|
||||
mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle;
|
||||
mbox.xferaddr = (u32)adapter->buf_dma_handle;
|
||||
|
||||
adapter->boot_ldrv_enabled = 0;
|
||||
adapter->boot_ldrv = 0;
|
||||
@ -3721,13 +3713,11 @@ mega_get_boot_drv(adapter_t *adapter)
|
||||
static int
|
||||
mega_support_random_del(adapter_t *adapter)
|
||||
{
|
||||
unsigned char raw_mbox[sizeof(struct mbox_out)];
|
||||
mbox_t *mbox;
|
||||
struct mbox_out mbox;
|
||||
unsigned char *raw_mbox = (u8 *)&mbox;
|
||||
int rval;
|
||||
|
||||
mbox = (mbox_t *)raw_mbox;
|
||||
|
||||
memset(&mbox->m_out, 0, sizeof(raw_mbox));
|
||||
memset(&mbox, 0, sizeof(mbox));
|
||||
|
||||
/*
|
||||
* issue command
|
||||
@ -3750,13 +3740,11 @@ mega_support_random_del(adapter_t *adapter)
|
||||
static int
|
||||
mega_support_ext_cdb(adapter_t *adapter)
|
||||
{
|
||||
unsigned char raw_mbox[sizeof(struct mbox_out)];
|
||||
mbox_t *mbox;
|
||||
struct mbox_out mbox;
|
||||
unsigned char *raw_mbox = (u8 *)&mbox;
|
||||
int rval;
|
||||
|
||||
mbox = (mbox_t *)raw_mbox;
|
||||
|
||||
memset(&mbox->m_out, 0, sizeof(raw_mbox));
|
||||
memset(&mbox, 0, sizeof(mbox));
|
||||
/*
|
||||
* issue command to find out if controller supports extended CDBs.
|
||||
*/
|
||||
@ -3865,16 +3853,14 @@ mega_do_del_logdrv(adapter_t *adapter, int logdrv)
|
||||
static void
|
||||
mega_get_max_sgl(adapter_t *adapter)
|
||||
{
|
||||
unsigned char raw_mbox[sizeof(struct mbox_out)];
|
||||
mbox_t *mbox;
|
||||
struct mbox_out mbox;
|
||||
unsigned char *raw_mbox = (u8 *)&mbox;
|
||||
|
||||
mbox = (mbox_t *)raw_mbox;
|
||||
|
||||
memset(mbox, 0, sizeof(raw_mbox));
|
||||
memset(&mbox, 0, sizeof(mbox));
|
||||
|
||||
memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE);
|
||||
|
||||
mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle;
|
||||
mbox.xferaddr = (u32)adapter->buf_dma_handle;
|
||||
|
||||
raw_mbox[0] = MAIN_MISC_OPCODE;
|
||||
raw_mbox[2] = GET_MAX_SG_SUPPORT;
|
||||
@ -3888,7 +3874,7 @@ mega_get_max_sgl(adapter_t *adapter)
|
||||
}
|
||||
else {
|
||||
adapter->sglen = *((char *)adapter->mega_buffer);
|
||||
|
||||
|
||||
/*
|
||||
* Make sure this is not more than the resources we are
|
||||
* planning to allocate
|
||||
@ -3910,16 +3896,14 @@ mega_get_max_sgl(adapter_t *adapter)
|
||||
static int
|
||||
mega_support_cluster(adapter_t *adapter)
|
||||
{
|
||||
unsigned char raw_mbox[sizeof(struct mbox_out)];
|
||||
mbox_t *mbox;
|
||||
struct mbox_out mbox;
|
||||
unsigned char *raw_mbox = (u8 *)&mbox;
|
||||
|
||||
mbox = (mbox_t *)raw_mbox;
|
||||
|
||||
memset(mbox, 0, sizeof(raw_mbox));
|
||||
memset(&mbox, 0, sizeof(mbox));
|
||||
|
||||
memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE);
|
||||
|
||||
mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle;
|
||||
mbox.xferaddr = (u32)adapter->buf_dma_handle;
|
||||
|
||||
/*
|
||||
* Try to get the initiator id. This command will succeed iff the
|
||||
|
Loading…
Reference in New Issue
Block a user