]> 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>
Thu, 29 Nov 2012 03:18:14 +0000 (14:18 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Wed, 5 Dec 2012 05:23:24 +0000 (16:23 +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 fc0ec5e0d58ef43a11f525148dca69d1cb442188..ba6f2a1f5fd38299d5f9f873259ea99be1164da3 100644 (file)
@@ -3133,7 +3133,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");
@@ -3145,7 +3145,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");
@@ -3266,6 +3266,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);
@@ -3273,12 +3279,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;