aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/dma-mapping.h2
-rw-r--r--lib/swiotlb.c6
2 files changed, 2 insertions, 6 deletions
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index 0dba7433af18..ba9114ec5d3a 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -65,7 +65,7 @@ static inline int is_buffer_dma_capable(u64 mask, dma_addr_t addr, size_t size)
65 65
66static inline u64 dma_get_mask(struct device *dev) 66static inline u64 dma_get_mask(struct device *dev)
67{ 67{
68 if (dev->dma_mask && *dev->dma_mask) 68 if (dev && dev->dma_mask && *dev->dma_mask)
69 return *dev->dma_mask; 69 return *dev->dma_mask;
70 return DMA_32BIT_MASK; 70 return DMA_32BIT_MASK;
71} 71}
diff --git a/lib/swiotlb.c b/lib/swiotlb.c
index 240a67c2c979..f8eebd489149 100644
--- a/lib/swiotlb.c
+++ b/lib/swiotlb.c
@@ -276,11 +276,7 @@ cleanup1:
276static int 276static int
277address_needs_mapping(struct device *hwdev, dma_addr_t addr, size_t size) 277address_needs_mapping(struct device *hwdev, dma_addr_t addr, size_t size)
278{ 278{
279 dma_addr_t mask = 0xffffffff; 279 return !is_buffer_dma_capable(dma_get_mask(hwdev), addr, size);
280 /* If the device has a mask, use it, otherwise default to 32 bits */
281 if (hwdev && hwdev->dma_mask)
282 mask = *hwdev->dma_mask;
283 return !is_buffer_dma_capable(mask, addr, size);
284} 280}
285 281
286static int is_swiotlb_buffer(char *addr) 282static int is_swiotlb_buffer(char *addr)