OSDN Git Service

usb: gadget: gr_udc: Use GFP_ATOMIC when allocating under held spinlock
authorAndreas Larsson <andreas@gaisler.com>
Tue, 1 Apr 2014 10:15:17 +0000 (12:15 +0200)
committerFelipe Balbi <balbi@ti.com>
Mon, 21 Apr 2014 19:07:28 +0000 (14:07 -0500)
As gr_ep_init must be called with dev->lock held, GFP_KERNEL must not be used.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Andreas Larsson <andreas@gaisler.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/gadget/gr_udc.c

index 72458be..4966971 100644 (file)
@@ -1990,8 +1990,8 @@ static int gr_ep_init(struct gr_udc *dev, int num, int is_in, u32 maxplimit)
        INIT_LIST_HEAD(&ep->queue);
 
        if (num == 0) {
-               _req = gr_alloc_request(&ep->ep, GFP_KERNEL);
-               buf = devm_kzalloc(dev->dev, PAGE_SIZE, GFP_DMA | GFP_KERNEL);
+               _req = gr_alloc_request(&ep->ep, GFP_ATOMIC);
+               buf = devm_kzalloc(dev->dev, PAGE_SIZE, GFP_DMA | GFP_ATOMIC);
                if (!_req || !buf) {
                        /* possible _req freed by gr_probe via gr_remove */
                        return -ENOMEM;