diff options
author | Joe Lawrence <joe.lawrence@stratus.com> | 2014-06-25 17:04:22 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2014-07-25 17:16:57 -0400 |
commit | 62c4da449db0c5a605f8bf99c5ca735da0c0587f (patch) | |
tree | b16b9f7b8dd09403df50b22047e1a26091410304 | |
parent | 42de597eabc2ba837203788170cc57814a9df7a7 (diff) |
mpt3sas: 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 MPT3SAS_DEVICE (24 bytes)
struct scsi_target (760 bytes) > struct MPT3SAS_TARGET (32 bytes)
This fixes the following smatch warnings:
drivers/scsi/mpt3sas/mpt3sas_scsih.c:1166 _scsih_target_alloc()
warn: struct type mismatch 'MPT3SAS_TARGET vs scsi_target'
drivers/scsi/mpt3sas/mpt3sas_scsih.c:1280 _scsih_slave_alloc()
warn: struct type mismatch 'MPT3SAS_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>
-rw-r--r-- | drivers/scsi/mpt3sas/mpt3sas_scsih.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c index 0274ac3c533b..08a95b2a2f2e 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c | |||
@@ -1163,7 +1163,8 @@ _scsih_target_alloc(struct scsi_target *starget) | |||
1163 | unsigned long flags; | 1163 | unsigned long flags; |
1164 | struct sas_rphy *rphy; | 1164 | struct sas_rphy *rphy; |
1165 | 1165 | ||
1166 | sas_target_priv_data = kzalloc(sizeof(struct scsi_target), GFP_KERNEL); | 1166 | sas_target_priv_data = kzalloc(sizeof(*sas_target_priv_data), |
1167 | GFP_KERNEL); | ||
1167 | if (!sas_target_priv_data) | 1168 | if (!sas_target_priv_data) |
1168 | return -ENOMEM; | 1169 | return -ENOMEM; |
1169 | 1170 | ||
@@ -1277,7 +1278,8 @@ _scsih_slave_alloc(struct scsi_device *sdev) | |||
1277 | struct _sas_device *sas_device; | 1278 | struct _sas_device *sas_device; |
1278 | unsigned long flags; | 1279 | unsigned long flags; |
1279 | 1280 | ||
1280 | sas_device_priv_data = kzalloc(sizeof(struct scsi_device), GFP_KERNEL); | 1281 | sas_device_priv_data = kzalloc(sizeof(*sas_device_priv_data), |
1282 | GFP_KERNEL); | ||
1281 | if (!sas_device_priv_data) | 1283 | if (!sas_device_priv_data) |
1282 | return -ENOMEM; | 1284 | return -ENOMEM; |
1283 | 1285 | ||