diff options
Diffstat (limited to 'lib/swiotlb.c')
| -rw-r--r-- | lib/swiotlb.c | 15 | 
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/swiotlb.c b/lib/swiotlb.c index 9e2fe3e1804..ac25cd28e80 100644 --- a/lib/swiotlb.c +++ b/lib/swiotlb.c @@ -581,12 +581,15 @@ swiotlb_full(struct device *dev, size_t size, int dir, int do_panic)  	printk(KERN_ERR "DMA: Out of SW-IOMMU space for %zu bytes at "  	       "device %s\n", size, dev ? dev_name(dev) : "?"); -	if (size > io_tlb_overflow && do_panic) { -		if (dir == DMA_FROM_DEVICE || dir == DMA_BIDIRECTIONAL) -			panic("DMA: Memory would be corrupted\n"); -		if (dir == DMA_TO_DEVICE || dir == DMA_BIDIRECTIONAL) -			panic("DMA: Random memory would be DMAed\n"); -	} +	if (size <= io_tlb_overflow || !do_panic) +		return; + +	if (dir == DMA_BIDIRECTIONAL) +		panic("DMA: Random memory could be DMA accessed\n"); +	if (dir == DMA_FROM_DEVICE) +		panic("DMA: Random memory could be DMA written\n"); +	if (dir == DMA_TO_DEVICE) +		panic("DMA: Random memory could be DMA read\n");  }  /*  |