diff options
author | Colin Ian King <colin.king@canonical.com> | 2016-09-29 14:14:38 -0400 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2016-09-30 13:48:49 -0400 |
commit | 9f0df936b1b93a7fab5b9ed73009f43369c121ea (patch) | |
tree | 2ffa16bd0d3060553b282790183768e13b4d2a05 | |
parent | 2cc40ee7ae30fa12c3ee3f18e6c0e81cced2cdcc (diff) |
dmaengine: coh901318: fix integer overflow when shifting more than 32 places
Currently U300_DMA_CHANNELS is set to 40, meaning that the shift of 1 can
be more than 32 places, which leads to a 32 bit integer overflow. Fix this
by using 1ULL instead of 1 before shifting it. Also add braces on the
for-loop to keep with coding style conventions.
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
-rw-r--r-- | drivers/dma/coh901318.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/dma/coh901318.c b/drivers/dma/coh901318.c index a373ecacfaba..5b1d4a39b30b 100644 --- a/drivers/dma/coh901318.c +++ b/drivers/dma/coh901318.c | |||
@@ -1352,9 +1352,10 @@ static int coh901318_debugfs_read(struct file *file, char __user *buf, | |||
1352 | 1352 | ||
1353 | tmp += sprintf(tmp, "DMA -- enabled dma channels\n"); | 1353 | tmp += sprintf(tmp, "DMA -- enabled dma channels\n"); |
1354 | 1354 | ||
1355 | for (i = 0; i < U300_DMA_CHANNELS; i++) | 1355 | for (i = 0; i < U300_DMA_CHANNELS; i++) { |
1356 | if (started_channels & (1 << i)) | 1356 | if (started_channels & (1ULL << i)) |
1357 | tmp += sprintf(tmp, "channel %d\n", i); | 1357 | tmp += sprintf(tmp, "channel %d\n", i); |
1358 | } | ||
1358 | 1359 | ||
1359 | tmp += sprintf(tmp, "Pool alloc nbr %d\n", pool_count); | 1360 | tmp += sprintf(tmp, "Pool alloc nbr %d\n", pool_count); |
1360 | 1361 | ||