From: Xi Wang Date: Sun, 10 Mar 2013 10:54:48 +0000 (+1100) Subject: drivers/usb/gadget/amd5536udc.c: avoid calling dma_pool_create() with NULL dev X-Git-Tag: next-20130312~3^2~223 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=c84e9d7fa34c33f9a15158fa6e9e0fa39a74747c;p=karo-tx-linux.git drivers/usb/gadget/amd5536udc.c: avoid calling dma_pool_create() with NULL dev Calling dma_pool_create() with dev==NULL will oops on a NUMA machine. Rather than changing dma_pool_create() we wish to disallow passing dev==NULL. This requires fixing up the small number of drivers which are passing in dev==NULL. Use &dev->pdev->dev instead of NULL. Signed-off-by: Xi Wang Cc: Felipe Balbi Cc: Greg KH Signed-off-by: Andrew Morton --- diff --git a/drivers/usb/gadget/amd5536udc.c b/drivers/usb/gadget/amd5536udc.c index 75973f33a4c8..142616a42f45 100644 --- a/drivers/usb/gadget/amd5536udc.c +++ b/drivers/usb/gadget/amd5536udc.c @@ -3102,7 +3102,7 @@ static int init_dma_pools(struct udc *dev) } /* DMA setup */ - dev->data_requests = dma_pool_create("data_requests", NULL, + dev->data_requests = dma_pool_create("data_requests", &dev->pdev->dev, sizeof(struct udc_data_dma), 0, 0); if (!dev->data_requests) { DBG(dev, "can't get request data pool\n"); @@ -3114,7 +3114,7 @@ static int init_dma_pools(struct udc *dev) dev->ep[UDC_EP0IN_IX].dma = &dev->regs->ctl; /* dma desc for setup data */ - dev->stp_requests = dma_pool_create("setup requests", NULL, + dev->stp_requests = dma_pool_create("setup requests", &dev->pdev->dev, sizeof(struct udc_stp_dma), 0, 0); if (!dev->stp_requests) { DBG(dev, "can't get stp request pool\n"); @@ -3235,6 +3235,12 @@ static int udc_pci_probe( pci_set_master(pdev); pci_try_set_mwi(pdev); + dev->phys_addr = resource; + dev->irq = pdev->irq; + dev->pdev = pdev; + dev->gadget.dev.parent = &pdev->dev; + dev->gadget.dev.dma_mask = pdev->dev.dma_mask; + /* init dma pools */ if (use_dma) { retval = init_dma_pools(dev); @@ -3242,12 +3248,6 @@ static int udc_pci_probe( goto finished; } - dev->phys_addr = resource; - dev->irq = pdev->irq; - dev->pdev = pdev; - dev->gadget.dev.parent = &pdev->dev; - dev->gadget.dev.dma_mask = pdev->dev.dma_mask; - /* general probing */ if (udc_probe(dev) == 0) return 0;