History

ARM: 8305/1: DMA: Fix kzalloc flags in __iommu_alloc_buffer()

There doesn't seem to be any valid reason to allocate the pages array with the same flags as the buffer itself. Doing so can eventually lead to the following safeguard in mm/slab.c's cache_grow() to be hit: if (unlikely(flags & GFP_SLAB_BUG_MASK)) { pr_emerg("gfp: %un", flags & GFP_SLAB_BUG_MASK); BUG(); } This happens when buffers are allocated with __GFP_DMA32 or __GFP_HIGHMEM. Fix this by allocating the pages array with GFP_KERNEL to follow what is done elsewhere in this file. Using GFP_KERNEL in __iommu_alloc_buffer() is safe because atomic allocations are handled by __iommu_alloc_atomic().

Alexandre Courbot committed 11 years ago

Commit 23be7fd1 parent 8e648061 file · +1 −1Browse files

Unified · Split

arch/arm/mm/dma-mapping.c+1−1
@@ -1106,7 +1106,7 @@ static struct page **__iommu_alloc_buffer(struct device *dev, size_t size, · 1105 unmodified lines
11061106 int i = 0;
11071107
11081108 if (array_size <= PAGE_SIZE)
1109− pages = kzalloc(array_size, gfp);
1109+ pages = kzalloc(array_size, GFP_KERNEL);
11101110 else
11111111 pages = vzalloc(array_size);
11121112 if (!pages)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t