diff options
Diffstat (limited to 'lib/dma-debug.c')
| -rw-r--r-- | lib/dma-debug.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/dma-debug.c b/lib/dma-debug.c index f9e6d38b4b3..1a992089486 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c @@ -722,10 +722,11 @@ void debug_dma_map_page(struct device *dev, struct page *page, size_t offset,  	entry->size      = size;  	entry->direction = direction; -	if (map_single) { -		void *addr = ((char *)page_address(page)) + offset; - +	if (map_single)  		entry->type = dma_debug_single; + +	if (!PageHighMem(page)) { +		void *addr = ((char *)page_address(page)) + offset;  		check_for_stack(dev, addr);  		check_for_illegal_area(dev, addr, size);  	} @@ -779,8 +780,10 @@ void debug_dma_map_sg(struct device *dev, struct scatterlist *sg,  		entry->sg_call_ents   = nents;  		entry->sg_mapped_ents = mapped_ents; -		check_for_stack(dev, sg_virt(s)); -		check_for_illegal_area(dev, sg_virt(s), s->length); +		if (!PageHighMem(sg_page(s))) { +			check_for_stack(dev, sg_virt(s)); +			check_for_illegal_area(dev, sg_virt(s), s->length); +		}  		add_dma_entry(entry);  	}  |