usb: dwc3: gadget: fix set_halt() bug with pending transfers
commit7a60855972f0d3c014093046cb6f013a1ee5bb19
authorFelipe Balbi <balbi@ti.com>
Wed, 24 Sep 2014 19:19:52 +0000 (24 14:19 -0500)
committerFelipe Balbi <balbi@ti.com>
Mon, 20 Oct 2014 20:58:48 +0000 (20 15:58 -0500)
tree8c25e151ddaab4d8840bcd82ba31c0c5eff99a94
parent95aa4e8d658778f787e2ce205d3018443d027477
usb: dwc3: gadget: fix set_halt() bug with pending transfers

According to our Gadget Framework API documentation,
->set_halt() *must* return -EAGAIN if we have pending
transfers (on either direction) or FIFO isn't empty (on
TX endpoints).

Fix this bug so that the mass storage gadget can be used
without stall=0 parameter.

This patch should be backported to all kernels since v3.2.

Cc: <stable@vger.kernel.org> # v3.2+
Suggested-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc3/ep0.c
drivers/usb/dwc3/gadget.c
drivers/usb/dwc3/gadget.h