For some reason, Tuba can't seem to post to linux-usb@vger, so I'm
forwarding on his message below.
Felipe, sorry if you have seen this 3+ times already :(
thanks,
greg k-h
On Fri, Mar 23, 2018 at 01:05:28PM +0000, Yavuz, Tuba wrote:
>
> Hello,
>
> It looks like there is a deadlock possibility due to double locking of a
> spinlock in the f_hidg_write function of the f_hid driver.
>
> spin_lock_irqsave(&hidg->write_spinlock, flags); // first acquire
>
> /* we our function has been disabled by host */
> if (!hidg->req) {
> free_ep_req(hidg->in_ep, hidg->req);
> /*
> * TODO
> * Should we fail with error here?
> */
> goto try_again;
> }
>
> ...
>
> status = usb_ep_queue(hidg->in_ep, hidg->req, GFP_ATOMIC);
> =>
> ...
> => usb_gadget_giveback_request
> =>
> f_hidg_req_complete
> =>
> spin_lock_irqsave(&hidg->write_spinlock,
> flags); // second acquire
>
> The bug was introduced with commit 749494b6bdbbaf0899aa1c62a1ad74cd747bce47.
>
>
> Tuba Yavuz, Ph.D.
> Assistant Professor
> Electrical and Computer Engineering Department
> University of Florida
> Gainesville, FL 32611
> Webpage: http://www.tuba.ece.ufl.edu/
> Email: [email protected]
> Phone: (352) 846 0202
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html