Hi!
Other responsibilities has been holding back the Linux commitments.
Thank you for reminding me! I'll get to it!
Best regards,
Andreas Larsson
Software Engineer
Aeroflex Gaisler AB
Aeroflex Microelectronic Solutions – HiRel
Kungsgatan 12
SE-411 19 Gothenburg, Sweden
Phone: +46 31 7758669
andreas@xxxxxxxxxxx
www.Aeroflex.com/Gaisler
On 2014-03-27 14:52, Dan Carpenter wrote:
This bug is still there in linux-next. What's the story, Andreas?
regards,
dan carpenter
On Thu, Jan 23, 2014 at 07:19:57PM +0300, Dan Carpenter wrote:
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