re: [SCSI] mpt2sas: Fixed Big Indian Issues on 32 bit PPC

Dan Carpenter
2012-02-20T14:05:49Z

Hello Kashyap, Desai,

The patch c97951ec46d4: "[SCSI] mpt2sas: Fixed Big Indian Issues on
32 bit PPC" from Jun 14, 2011, leads to the following static checker
warning:

drivers/scsi/mpt2sas/mpt2sas_base.c:3352 _base_get_port_facts()
warn: are we memsetting too much? 6 vs 28

We changed the size of certain data structures.

- Mpi2IOCFactsReply_t facts;
- Mpi2PortFactsReply_t *pfacts;
+ struct mpt2sas_facts facts;
+ struct mpt2sas_port_facts *pfacts;

But it's not done consistently. We still memset it as if it were the
original size.

memset(facts, 0, sizeof(Mpi2IOCFactsReply_t));

And we still allocate the original size data structure:

4270 ioc->pfacts = kcalloc(ioc->facts.NumberOfPorts,
4271 sizeof(Mpi2PortFactsReply_t), GFP_KERNEL);

There are a couple other warnings as well.
drivers/scsi/mpt2sas/mpt2sas_base.c:3394 _base_get_ioc_facts(24)
warn: are we memsetting too much? 60 vs 64
drivers/scsi/mpt2sas/mpt2sas_base.c:4270 mpt2sas_base_attach(56)
warn: double check that we're allocating correct size: 6 vs 28

Obviously the concern with a too big memset is that we're corrupting
the next element in the array or we're corrupting past the end of the
array.

regards,
dan carpenter