Messages in this thread | | | From | Felipe Balbi <> | Subject | Re: [PATCH 1/2] usb: gadget: r8a66597: Fix two possible sleep-in-atomic-context bugs in init_controller() | Date | Fri, 29 Jun 2018 09:35:10 +0300 |
| |
Hi,
Robert Jarzmik <robert.jarzmik@free.fr> writes:
> Jia-Ju Bai <baijiaju1990@gmail.com> writes: > >> The driver may sleep with holding a spinlock. >> The function call paths (from bottom to top) in Linux-4.16.7 are: >> >> [FUNC] msleep >> drivers/usb/gadget/udc/r8a66597-udc.c, 839: >> msleep in init_controller >> drivers/usb/gadget/udc/r8a66597-udc.c, 96: >> init_controller in r8a66597_usb_disconnect >> drivers/usb/gadget/udc/r8a66597-udc.c, 93: >> spin_lock in r8a66597_usb_disconnect > > That should not happen... > > If think the issue you have is that your usb_connect() and usb_disconnect() are > called from interrupt context. I think the proper fix, as what is done in most > udc phys, is to schedule a workqueue, see drivers/usb/phy/phy-gpio-vbus-usb.c, > gpio_vbus_data.vbus.
argh, no. No workqueues needed here. Sorry
-- balbi
| |