diff options
| author | Ian Campbell <ian.campbell@citrix.com> | 2008-12-16 15:17:29 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-12-17 12:57:02 -0500 |
| commit | a5ddde4a558b3bd1e3dc50e274a0db2ea7a8fd06 (patch) | |
| tree | e304335e81bc43942c00bb0d1c9f51f9286ebab6 | |
| parent | 0016fdee927f7aa0f428494bcf11ae60c7470a02 (diff) | |
swiotlb: add comment where we handle the overflow of a dma mask on 32 bit
Impact: cleanup
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
| -rw-r--r-- | lib/swiotlb.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/swiotlb.c b/lib/swiotlb.c index db724ba7ebf6..1272b23e4769 100644 --- a/lib/swiotlb.c +++ b/lib/swiotlb.c | |||
| @@ -301,6 +301,10 @@ map_single(struct device *hwdev, char *buffer, size_t size, int dir) | |||
| 301 | start_dma_addr = virt_to_bus(io_tlb_start) & mask; | 301 | start_dma_addr = virt_to_bus(io_tlb_start) & mask; |
| 302 | 302 | ||
| 303 | offset_slots = ALIGN(start_dma_addr, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT; | 303 | offset_slots = ALIGN(start_dma_addr, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT; |
| 304 | |||
| 305 | /* | ||
| 306 | * Carefully handle integer overflow which can occur when mask == ~0UL. | ||
| 307 | */ | ||
| 304 | max_slots = mask + 1 | 308 | max_slots = mask + 1 |
| 305 | ? ALIGN(mask + 1, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT | 309 | ? ALIGN(mask + 1, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT |
| 306 | : 1UL << (BITS_PER_LONG - IO_TLB_SHIFT); | 310 | : 1UL << (BITS_PER_LONG - IO_TLB_SHIFT); |
