dma-mapping: clear harmful GFP_* flags in common code

Lift the code from x86 so that we behave consistently.  In the future we
should probably warn if any of these is set.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Jesper Nilsson <jesper.nilsson@axis.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> [m68k]
This commit is contained in:
Christoph Hellwig
2017-12-22 16:05:15 +01:00
parent 205e1b7f51
commit 57bf5a8963
12 changed files with 7 additions and 31 deletions

View File

@@ -518,6 +518,13 @@ static inline void *dma_alloc_attrs(struct device *dev, size_t size,
if (dma_alloc_from_dev_coherent(dev, size, dma_handle, &cpu_addr))
return cpu_addr;
/*
* Let the implementation decide on the zone to allocate from, and
* decide on the way of zeroing the memory given that the memory
* returned should always be zeroed.
*/
flag &= ~(__GFP_DMA | __GFP_DMA32 | __GFP_HIGHMEM | __GFP_ZERO);
if (!arch_dma_alloc_attrs(&dev, &flag))
return NULL;
if (!ops->alloc)