re: usb: gadget: Add UDC driver for Aeroflex Gaisler GRUSBDC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Andreas Larsson,

The patch 27e9dcc924e9: "usb: gadget: Add UDC driver for Aeroflex
Gaisler GRUSBDC" from Dec 23, 2013, leads to the following static
checker warning:

	drivers/usb/gadget/gr_udc.c:1994 gr_ep_init()
	error: scheduling with locks held: 'spin_lock:lock'

drivers/usb/gadget/gr_udc.c
  1991          INIT_LIST_HEAD(&ep->queue);
  1992  
  1993          if (num == 0) {
  1994                  _req = gr_alloc_request(&ep->ep, GFP_KERNEL);
                                                         ^^^^^^^^^^
GFP_ATOMIC?

  1995                  buf = devm_kzalloc(dev->dev, PAGE_SIZE, GFP_DMA | GFP_KERNEL);
                                                                ^^^^^^^^^^^^^^^^^^^^
This allocation can sleep as well.  We're not allowed to sleep if we're
holding a spinlock.

  1996                  if (!_req || !buf) {
  1997                          /* possible _req freed by gr_probe via gr_remove */
  1998                          return -ENOMEM;
  1999                  }
  2000  
  2001                  req = container_of(_req, struct gr_request, req);
  2002                  req->req.buf = buf;
  2003                  req->req.length = MAX_CTRL_PL_SIZE;

The call tree is:
  gr_probe() <- takes the spinlock
  -> gr_udc_init()
     -> gr_ep_init()  <-- sleeps

regards,
dan carpenter

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux