mpt2sas: correct scsi_{target,device} hostdata allocation
In _scsih_{slave,target}_alloc, an incorrect structure type is passed
to sizeof() when allocating storage for hostdata. Luckily larger
structure types were used, so at least the wrong sizes were safe:
struct scsi_device (1784 bytes) > struct MPT2SAS_DEVICE (24 bytes)
struct scsi_target (760 bytes) > struct MPT2SAS_TARGET (40 bytes)
This fixes the following smatch warnings:
drivers/scsi/mpt2sas/mpt2sas_scsih.c:1295 _scsih_target_alloc()
warn: struct type mismatch 'MPT2SAS_TARGET vs scsi_target'
drivers/scsi/mpt2sas/mpt2sas_scsih.c:1409 _scsih_slave_alloc()
warn: struct type mismatch 'MPT2SAS_DEVICE vs scsi_device'
Signed-off-by: Joe Lawrence <joe.lawrence@stratus.com>
Acked-by: Sreekanth Reddy <Sreekanth.Reddy@avagotech.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
committed by
Christoph Hellwig
parent
4bfaa5c4b9
commit
feafe7c596
@@ -1292,7 +1292,8 @@ _scsih_target_alloc(struct scsi_target *starget)
|
|||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
struct sas_rphy *rphy;
|
struct sas_rphy *rphy;
|
||||||
|
|
||||||
sas_target_priv_data = kzalloc(sizeof(struct scsi_target), GFP_KERNEL);
|
sas_target_priv_data = kzalloc(sizeof(*sas_target_priv_data),
|
||||||
|
GFP_KERNEL);
|
||||||
if (!sas_target_priv_data)
|
if (!sas_target_priv_data)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
@@ -1406,7 +1407,8 @@ _scsih_slave_alloc(struct scsi_device *sdev)
|
|||||||
struct _sas_device *sas_device;
|
struct _sas_device *sas_device;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
sas_device_priv_data = kzalloc(sizeof(struct scsi_device), GFP_KERNEL);
|
sas_device_priv_data = kzalloc(sizeof(*sas_device_priv_data),
|
||||||
|
GFP_KERNEL);
|
||||||
if (!sas_device_priv_data)
|
if (!sas_device_priv_data)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user