summaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorStephen Cameron <stephenmcameron@gmail.com>2015-01-23 16:44:14 -0600
committerJames Bottomley <JBottomley@Parallels.com>2015-02-02 09:57:42 -0800
commit07543e0c05de177f2e9612ae7756e904b329379c (patch)
treec8ffbbb1b192c4452047999b3175a17673892658 /drivers/scsi
parente4aa3e6ae2a82ecfce7eecc6c52dcaba7b9e3f84 (diff)
downloadop-kernel-dev-07543e0c05de177f2e9612ae7756e904b329379c.zip
op-kernel-dev-07543e0c05de177f2e9612ae7756e904b329379c.tar.gz
hpsa: guard against overflowing raid map array
In the code that translates logical drive LBAs to physical drive LBAs if we overflow the raid map disk data array we will get the wrong answers. We do not expect that to happen, but best to be on the safe side and guard against it anyway. Reviewed-by: Scott Teel <scott.teel@pmcs.com> Signed-off-by: Don Brace <don.brace@pmcs.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/hpsa.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index afd192d..03fae8a 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -3921,6 +3921,9 @@ static int hpsa_scsi_ioaccel_raid_map(struct ctlr_info *h,
return IO_ACCEL_INELIGIBLE;
}
+ if (unlikely(map_index >= RAID_MAP_MAX_ENTRIES))
+ return IO_ACCEL_INELIGIBLE;
+
c->phys_disk = dev->phys_disk[map_index];
disk_handle = dd[map_index].ioaccel_handle;
OpenPOWER on IntegriCloud