diff options
author | Roland Dreier <roland@purestorage.com> | 2011-11-30 19:30:33 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-12-15 01:57:40 -0500 |
commit | 2f73b9a896634dd0ce68b5af9ae5f475e24ce51e (patch) | |
tree | 60c51ea8f5580a6caa8060f32756adfa63ff8d1a /drivers/scsi/mpt2sas | |
parent | c24a1710d18d706ee2bbd87390868242f1a6d8d5 (diff) |
[SCSI] mpt2sas: Fix possible integer truncation of cpu_count
When computing reply_queue_count (the number of MSI-X vectors to use),
the driver does
ioc->reply_queue_count = min_t(u8, ioc->cpu_count,
ioc->msix_vector_count);
However, on a big machine, ioc->cpu_count could be outside the range
that fits in a u8; eg a system with 256 CPUs will end up
reply_queue_count set to 0.
Fix this by calculating the minimum as ints and then letting the
assignment to reply_queue_count handle integer demotion.
Signed-off-by: Roland Dreier <roland@purestorage.com>
Acked-by: "Nandigama, Nagalakshmi" <Nagalakshmi.Nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/mpt2sas')
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_base.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c index 65c377dc0279..2da49cdf0208 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_base.c +++ b/drivers/scsi/mpt2sas/mpt2sas_base.c | |||
@@ -1407,7 +1407,7 @@ _base_enable_msix(struct MPT2SAS_ADAPTER *ioc) | |||
1407 | if (_base_check_enable_msix(ioc) != 0) | 1407 | if (_base_check_enable_msix(ioc) != 0) |
1408 | goto try_ioapic; | 1408 | goto try_ioapic; |
1409 | 1409 | ||
1410 | ioc->reply_queue_count = min_t(u8, ioc->cpu_count, | 1410 | ioc->reply_queue_count = min_t(int, ioc->cpu_count, |
1411 | ioc->msix_vector_count); | 1411 | ioc->msix_vector_count); |
1412 | 1412 | ||
1413 | entries = kcalloc(ioc->reply_queue_count, sizeof(struct msix_entry), | 1413 | entries = kcalloc(ioc->reply_queue_count, sizeof(struct msix_entry), |