]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
drivers/usb/gadget/amd5536udc.c: avoid calling dma_pool_create() with NULL dev
authorXi Wang <xi.wang@gmail.com>
Sun, 10 Mar 2013 10:54:48 +0000 (21:54 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 12 Mar 2013 03:56:32 +0000 (14:56 +1100)
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 <xi.wang@gmail.com>
Cc: Felipe Balbi <balbi@ti.com>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
drivers/usb/gadget/amd5536udc.c

index 75973f33a4c80590ab6f8a012f9a1dec58c7ccbe..142616a42f45de69dc0f34b5986b35b02adb6423 100644 (file)
@@ -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;