scsi: mpt3sas: Use struct_size() for struct size calculations
After converting terminal variable arrays into flexible array members, use the bounds-checking struct_size() helper when possible to avoid open-coded arithmetic struct size calculations. Signed-off-by: James Seo <james@equiv.tech> Link: https://lore.kernel.org/r/20230806170604.16143-8-james@equiv.tech Tested-by: Borislav Petkov (AMD) <bp@alien8.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
1f11266099
commit
f4f76e1417
@ -4893,8 +4893,7 @@ mpt3sas_base_update_missing_delay(struct MPT3SAS_ADAPTER *ioc,
|
||||
if (!num_phys)
|
||||
return;
|
||||
|
||||
sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (num_phys *
|
||||
sizeof(Mpi2SasIOUnit1PhyData_t));
|
||||
sz = struct_size(sas_iounit_pg1, PhyData, num_phys);
|
||||
sas_iounit_pg1 = kzalloc(sz, GFP_KERNEL);
|
||||
if (!sas_iounit_pg1) {
|
||||
ioc_err(ioc, "failure at %s:%d/%s()!\n",
|
||||
|
@ -2431,8 +2431,7 @@ _scsih_get_volume_capabilities(struct MPT3SAS_ADAPTER *ioc,
|
||||
}
|
||||
|
||||
raid_device->num_pds = num_pds;
|
||||
sz = offsetof(Mpi2RaidVolPage0_t, PhysDisk) + (num_pds *
|
||||
sizeof(Mpi2RaidVol0PhysDisk_t));
|
||||
sz = struct_size(vol_pg0, PhysDisk, num_pds);
|
||||
vol_pg0 = kzalloc(sz, GFP_KERNEL);
|
||||
if (!vol_pg0) {
|
||||
dfailprintk(ioc,
|
||||
@ -5966,8 +5965,7 @@ _scsih_update_vphys_after_reset(struct MPT3SAS_ADAPTER *ioc)
|
||||
/*
|
||||
* Read SASIOUnitPage0 to get each HBA Phy's data.
|
||||
*/
|
||||
sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) +
|
||||
(ioc->sas_hba.num_phys * sizeof(Mpi2SasIOUnit0PhyData_t));
|
||||
sz = struct_size(sas_iounit_pg0, PhyData, ioc->sas_hba.num_phys);
|
||||
sas_iounit_pg0 = kzalloc(sz, GFP_KERNEL);
|
||||
if (!sas_iounit_pg0) {
|
||||
ioc_err(ioc, "failure at %s:%d/%s()!\n",
|
||||
@ -6145,8 +6143,7 @@ _scsih_get_port_table_after_reset(struct MPT3SAS_ADAPTER *ioc,
|
||||
u64 attached_sas_addr;
|
||||
u8 found = 0, port_count = 0, port_id;
|
||||
|
||||
sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) + (ioc->sas_hba.num_phys
|
||||
* sizeof(Mpi2SasIOUnit0PhyData_t));
|
||||
sz = struct_size(sas_iounit_pg0, PhyData, ioc->sas_hba.num_phys);
|
||||
sas_iounit_pg0 = kzalloc(sz, GFP_KERNEL);
|
||||
if (!sas_iounit_pg0) {
|
||||
ioc_err(ioc, "failure at %s:%d/%s()!\n",
|
||||
@ -6579,8 +6576,7 @@ _scsih_sas_host_refresh(struct MPT3SAS_ADAPTER *ioc)
|
||||
ioc_info(ioc, "updating handles for sas_host(0x%016llx)\n",
|
||||
(u64)ioc->sas_hba.sas_address));
|
||||
|
||||
sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) + (ioc->sas_hba.num_phys
|
||||
* sizeof(Mpi2SasIOUnit0PhyData_t));
|
||||
sz = struct_size(sas_iounit_pg0, PhyData, ioc->sas_hba.num_phys);
|
||||
sas_iounit_pg0 = kzalloc(sz, GFP_KERNEL);
|
||||
if (!sas_iounit_pg0) {
|
||||
ioc_err(ioc, "failure at %s:%d/%s()!\n",
|
||||
@ -6731,8 +6727,7 @@ _scsih_sas_host_add(struct MPT3SAS_ADAPTER *ioc)
|
||||
ioc->sas_hba.num_phys = num_phys;
|
||||
|
||||
/* sas_iounit page 0 */
|
||||
sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) + (ioc->sas_hba.num_phys *
|
||||
sizeof(Mpi2SasIOUnit0PhyData_t));
|
||||
sz = struct_size(sas_iounit_pg0, PhyData, ioc->sas_hba.num_phys);
|
||||
sas_iounit_pg0 = kzalloc(sz, GFP_KERNEL);
|
||||
if (!sas_iounit_pg0) {
|
||||
ioc_err(ioc, "failure at %s:%d/%s()!\n",
|
||||
@ -6754,8 +6749,7 @@ _scsih_sas_host_add(struct MPT3SAS_ADAPTER *ioc)
|
||||
}
|
||||
|
||||
/* sas_iounit page 1 */
|
||||
sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys *
|
||||
sizeof(Mpi2SasIOUnit1PhyData_t));
|
||||
sz = struct_size(sas_iounit_pg1, PhyData, ioc->sas_hba.num_phys);
|
||||
sas_iounit_pg1 = kzalloc(sz, GFP_KERNEL);
|
||||
if (!sas_iounit_pg1) {
|
||||
ioc_err(ioc, "failure at %s:%d/%s()!\n",
|
||||
|
@ -1792,8 +1792,7 @@ _transport_phy_enable(struct sas_phy *phy, int enable)
|
||||
/* handle hba phys */
|
||||
|
||||
/* read sas_iounit page 0 */
|
||||
sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) + (ioc->sas_hba.num_phys *
|
||||
sizeof(Mpi2SasIOUnit0PhyData_t));
|
||||
sz = struct_size(sas_iounit_pg0, PhyData, ioc->sas_hba.num_phys);
|
||||
sas_iounit_pg0 = kzalloc(sz, GFP_KERNEL);
|
||||
if (!sas_iounit_pg0) {
|
||||
ioc_err(ioc, "failure at %s:%d/%s()!\n",
|
||||
@ -1833,8 +1832,7 @@ _transport_phy_enable(struct sas_phy *phy, int enable)
|
||||
}
|
||||
|
||||
/* read sas_iounit page 1 */
|
||||
sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys *
|
||||
sizeof(Mpi2SasIOUnit1PhyData_t));
|
||||
sz = struct_size(sas_iounit_pg1, PhyData, ioc->sas_hba.num_phys);
|
||||
sas_iounit_pg1 = kzalloc(sz, GFP_KERNEL);
|
||||
if (!sas_iounit_pg1) {
|
||||
ioc_err(ioc, "failure at %s:%d/%s()!\n",
|
||||
@ -1944,8 +1942,7 @@ _transport_phy_speed(struct sas_phy *phy, struct sas_phy_linkrates *rates)
|
||||
/* handle hba phys */
|
||||
|
||||
/* sas_iounit page 1 */
|
||||
sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys *
|
||||
sizeof(Mpi2SasIOUnit1PhyData_t));
|
||||
sz = struct_size(sas_iounit_pg1, PhyData, ioc->sas_hba.num_phys);
|
||||
sas_iounit_pg1 = kzalloc(sz, GFP_KERNEL);
|
||||
if (!sas_iounit_pg1) {
|
||||
ioc_err(ioc, "failure at %s:%d/%s()!\n",
|
||||
|
@ -141,8 +141,7 @@ mpt3sas_init_warpdrive_properties(struct MPT3SAS_ADAPTER *ioc,
|
||||
return;
|
||||
}
|
||||
|
||||
sz = offsetof(Mpi2RaidVolPage0_t, PhysDisk) + (num_pds *
|
||||
sizeof(Mpi2RaidVol0PhysDisk_t));
|
||||
sz = struct_size(vol_pg0, PhysDisk, num_pds);
|
||||
vol_pg0 = kzalloc(sz, GFP_KERNEL);
|
||||
if (!vol_pg0) {
|
||||
ioc_info(ioc, "WarpDrive : Direct IO is disabled Memory allocation failure for RVPG0\n");
|
||||
|
Loading…
Reference in New Issue
Block a user