Messages in this thread | | | From | Robert Jarzmik <> | Subject | Re: [PATCH 1/2] usb: gadget: r8a66597: Fix two possible sleep-in-atomic-context bugs in init_controller() | Date | Thu, 21 Jun 2018 11:06:02 +0200 |
| |
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.
Cheers.
-- Robert
| |