Message ID | 1410351472-10501-1-git-send-email-daniel@gaisler.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
From: Daniel Hellstrom <daniel@gaisler.com> Date: Wed, 10 Sep 2014 14:17:52 +0200 > dma_zalloc_coherent() calls dma_alloc_coherent(__GFP_ZERO) > but the sparc32 implementations sbus_alloc_coherent() and > pci32_alloc_coherent() doesn't take the gfp flags into > account. > > Tested on the SPARC32/LEON GRETH Ethernet driver which fails > due to dma_alloc_coherent(__GFP_ZERO) returns non zeroed > pages. > > Signed-off-by: Daniel Hellstrom <daniel@gaisler.com> Applied, thanks Daniel. -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 09/10/2014 11:03 PM, David Miller wrote: > From: Daniel Hellstrom<daniel@gaisler.com> > Date: Wed, 10 Sep 2014 14:17:52 +0200 > >> dma_zalloc_coherent() calls dma_alloc_coherent(__GFP_ZERO) >> but the sparc32 implementations sbus_alloc_coherent() and >> pci32_alloc_coherent() doesn't take the gfp flags into >> account. >> >> Tested on the SPARC32/LEON GRETH Ethernet driver which fails >> due to dma_alloc_coherent(__GFP_ZERO) returns non zeroed >> pages. >> >> Signed-off-by: Daniel Hellstrom<daniel@gaisler.com> > Applied, thanks Daniel. Thanks! I think this is subject for the stable branches. -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c index 2096468..6cacf2d 100644 --- a/arch/sparc/kernel/ioport.c +++ b/arch/sparc/kernel/ioport.c @@ -278,7 +278,8 @@ static void *sbus_alloc_coherent(struct device *dev, size_t len, } order = get_order(len_total); - if ((va = __get_free_pages(GFP_KERNEL|__GFP_COMP, order)) == 0) + va = __get_free_pages(gfp, order); + if (va == 0) goto err_nopages; if ((res = kzalloc(sizeof(struct resource), GFP_KERNEL)) == NULL) @@ -443,7 +444,7 @@ static void *pci32_alloc_coherent(struct device *dev, size_t len, } order = get_order(len_total); - va = (void *) __get_free_pages(GFP_KERNEL, order); + va = (void *) __get_free_pages(gfp, order); if (va == NULL) { printk("pci_alloc_consistent: no %ld pages\n", len_total>>PAGE_SHIFT); goto err_nopages;
dma_zalloc_coherent() calls dma_alloc_coherent(__GFP_ZERO) but the sparc32 implementations sbus_alloc_coherent() and pci32_alloc_coherent() doesn't take the gfp flags into account. Tested on the SPARC32/LEON GRETH Ethernet driver which fails due to dma_alloc_coherent(__GFP_ZERO) returns non zeroed pages. Signed-off-by: Daniel Hellstrom <daniel@gaisler.com> --- arch/sparc/kernel/ioport.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)