diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2008-03-05 03:09:30 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-03-05 20:55:13 -0500 |
commit | 4a0d3f3afddf01dfcfdcc826f0b706dbc01f4ef4 (patch) | |
tree | d97a16be3c5c6e3df17cc2ae535cada149486a51 /drivers/parisc/ccio-dma.c | |
parent | 41f7f60d31e5e1dfc9a92957b3e14e08a2f04964 (diff) |
parisc: fix IOMMU's device boundary overflow bug on 32bits arch
On 32bits boxes, boundary_size becomes zero due to a overflow and we
hit BUG_ON in iommu_is_span_boundary.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: Kyle McMartin <kyle@parisc-linux.org>
Cc: Matthew Wilcox <matthew@wil.cx>
Acked-by: Grant Grundler <grundler@parisc-linux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/parisc/ccio-dma.c')
-rw-r--r-- | drivers/parisc/ccio-dma.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/parisc/ccio-dma.c b/drivers/parisc/ccio-dma.c index 60d338cd8009..62db3c3fe4dc 100644 --- a/drivers/parisc/ccio-dma.c +++ b/drivers/parisc/ccio-dma.c | |||
@@ -366,8 +366,8 @@ ccio_alloc_range(struct ioc *ioc, struct device *dev, size_t size) | |||
366 | ** ggg sacrifices another 710 to the computer gods. | 366 | ** ggg sacrifices another 710 to the computer gods. |
367 | */ | 367 | */ |
368 | 368 | ||
369 | boundary_size = ALIGN(dma_get_seg_boundary(dev) + 1, 1 << IOVP_SHIFT); | 369 | boundary_size = ALIGN((unsigned long long)dma_get_seg_boundary(dev) + 1, |
370 | boundary_size >>= IOVP_SHIFT; | 370 | 1ULL << IOVP_SHIFT) >> IOVP_SHIFT; |
371 | 371 | ||
372 | if (pages_needed <= 8) { | 372 | if (pages_needed <= 8) { |
373 | /* | 373 | /* |