aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Lawrence <joe.lawrence@stratus.com>2014-06-25 17:04:22 -0400
committerChristoph Hellwig <hch@lst.de>2014-07-25 17:16:57 -0400
commit62c4da449db0c5a605f8bf99c5ca735da0c0587f (patch)
treeb16b9f7b8dd09403df50b22047e1a26091410304
parent42de597eabc2ba837203788170cc57814a9df7a7 (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.c6
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