From mboxrd@z Thu Jan 1 00:00:00 1970 From: gnurou@gmail.com (Alexandre Courbot) Date: Tue, 13 Jan 2015 17:45:16 +0900 Subject: [PATCH] ARM: DMA: Fix kzalloc flags in __iommu_alloc_buffer() In-Reply-To: <54897C14.3040702@samsung.com> References: <1418027967-12923-1-git-send-email-acourbot@nvidia.com> <54897C14.3040702@samsung.com> Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Ping? This patch still seems to be needed as of today... On Thu, Dec 11, 2014 at 8:12 PM, Marek Szyprowski wrote: > > On 2014-12-08 09:39, Alexandre Courbot wrote: >> >> 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 to be hit: >> >> BUG_ON(flags & GFP_SLAB_BUG_MASK); >> >> 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(). >> >> Signed-off-by: Alexandre Courbot >> Cc: Russell King >> Cc: Marek Szyprowski >> Cc: Arnd Bergmann >> Cc: Thierry Reding >> Cc: Konrad Rzeszutek Wilk > > > Acked-by: Marek Szyprowski > >> --- >> arch/arm/mm/dma-mapping.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c >> index e8907117861e..bc495354c802 100644 >> --- a/arch/arm/mm/dma-mapping.c >> +++ b/arch/arm/mm/dma-mapping.c >> @@ -1106,7 +1106,7 @@ static struct page **__iommu_alloc_buffer(struct >> device *dev, size_t size, >> int i = 0; >> if (array_size <= PAGE_SIZE) >> - pages = kzalloc(array_size, gfp); >> + pages = kzalloc(array_size, GFP_KERNEL); >> else >> pages = vzalloc(array_size); >> if (!pages) > > > Best regards > -- > Marek Szyprowski, PhD > Samsung R&D Institute Poland >