diff options
Diffstat (limited to 'drivers/scsi/megaraid')
-rw-r--r-- | drivers/scsi/megaraid/megaraid_sas_fp.c | 3 | ||||
-rw-r--r-- | drivers/scsi/megaraid/megaraid_sas_fusion.c | 14 |
2 files changed, 15 insertions, 2 deletions
diff --git a/drivers/scsi/megaraid/megaraid_sas_fp.c b/drivers/scsi/megaraid/megaraid_sas_fp.c index 7cae1c25c9a9..4f72287860ee 100644 --- a/drivers/scsi/megaraid/megaraid_sas_fp.c +++ b/drivers/scsi/megaraid/megaraid_sas_fp.c | |||
@@ -212,6 +212,9 @@ void MR_PopulateDrvRaidMap(struct megasas_instance *instance) | |||
212 | for (i = 0; i < MAX_RAIDMAP_LOGICAL_DRIVES + MAX_RAIDMAP_VIEWS; i++) | 212 | for (i = 0; i < MAX_RAIDMAP_LOGICAL_DRIVES + MAX_RAIDMAP_VIEWS; i++) |
213 | pDrvRaidMap->ldTgtIdToLd[i] = | 213 | pDrvRaidMap->ldTgtIdToLd[i] = |
214 | (u8)pFwRaidMap->ldTgtIdToLd[i]; | 214 | (u8)pFwRaidMap->ldTgtIdToLd[i]; |
215 | for (i = (MAX_RAIDMAP_LOGICAL_DRIVES + MAX_RAIDMAP_VIEWS); | ||
216 | i < MAX_LOGICAL_DRIVES_EXT; i++) | ||
217 | pDrvRaidMap->ldTgtIdToLd[i] = 0xff; | ||
215 | for (i = 0; i < ld_count; i++) { | 218 | for (i = 0; i < ld_count; i++) { |
216 | pDrvRaidMap->ldSpanMap[i] = pFwRaidMap->ldSpanMap[i]; | 219 | pDrvRaidMap->ldSpanMap[i] = pFwRaidMap->ldSpanMap[i]; |
217 | #if VD_EXT_DEBUG | 220 | #if VD_EXT_DEBUG |
diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c index af5ab9e5e8e5..7b23d347b69c 100644 --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c | |||
@@ -1725,9 +1725,19 @@ megasas_build_dcdb_fusion(struct megasas_instance *instance, | |||
1725 | if (scmd->device->channel < MEGASAS_MAX_PD_CHANNELS) | 1725 | if (scmd->device->channel < MEGASAS_MAX_PD_CHANNELS) |
1726 | goto NonFastPath; | 1726 | goto NonFastPath; |
1727 | 1727 | ||
1728 | /* | ||
1729 | * For older firmware, Driver should not access ldTgtIdToLd | ||
1730 | * beyond index 127 and for Extended VD firmware, ldTgtIdToLd | ||
1731 | * should not go beyond 255. | ||
1732 | */ | ||
1733 | |||
1734 | if ((!fusion->fast_path_io) || | ||
1735 | (device_id >= instance->fw_supported_vd_count)) | ||
1736 | goto NonFastPath; | ||
1737 | |||
1728 | ld = MR_TargetIdToLdGet(device_id, local_map_ptr); | 1738 | ld = MR_TargetIdToLdGet(device_id, local_map_ptr); |
1729 | if ((ld >= instance->fw_supported_vd_count) || | 1739 | |
1730 | (!fusion->fast_path_io)) | 1740 | if (ld >= instance->fw_supported_vd_count) |
1731 | goto NonFastPath; | 1741 | goto NonFastPath; |
1732 | 1742 | ||
1733 | raid = MR_LdRaidGet(ld, local_map_ptr); | 1743 | raid = MR_LdRaidGet(ld, local_map_ptr); |