usb: gadget: ffs: Fix BUG when userland exits with submitted AIO transfers

From: Alan Stern <stern@rowland.harvard.edu>
Date: 2018-06-21 15:30:42

On Thu, 21 Jun 2018, Roger Quadros wrote:
quoted
quoted
Can we avoid the spin_lock() and the work-queue and call usb_ep_dequeue() directly from here?
quoted
What is the purpose of the spin_lock()?
I agree that the lock doesn't seem to be necessary. But I believe the whole
thing is already running in non-sleeping context, even before the spinlock
is taken. So this wouldn't help much.

Even the io_cancel() syscall takes a spinlock before invoking the cancel
function. So this issue is not exclusive to program termination.

Are there any documented guidelines on which context usb_ep_dequeue() should
be able to be called in? The sleep in the dwc3 driver seems to be a recent
addition.
drivers/usb/udc/gadget/core.c has the only documentation, but context is not mentioned there.
Felipe, what do you suggest?
As far as I remember, usb_ep_dequeue() is supposed to be more or less 
analogous to usb_ep_queue(); drivers should be allowed to call either 
routine in an atomic context.

Alan Stern
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help