usb: musb: gadget: fix list_head usage
commit ad1adb89a0
(usb: musb: gadget: do not poke with gadget's list_head)
fixed a bug in musb where it was corrupting the list_head
which is supposed to be used by gadget drivers. While
doing that, I forgot to fix the usage in musb_gadget_dequeue()
method. Fix that.
Reported-by: Pavol Kurina <pavol.kurina@emsys.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
@@ -1274,7 +1274,8 @@ cleanup:
|
|||||||
static int musb_gadget_dequeue(struct usb_ep *ep, struct usb_request *request)
|
static int musb_gadget_dequeue(struct usb_ep *ep, struct usb_request *request)
|
||||||
{
|
{
|
||||||
struct musb_ep *musb_ep = to_musb_ep(ep);
|
struct musb_ep *musb_ep = to_musb_ep(ep);
|
||||||
struct usb_request *r;
|
struct musb_request *req = to_musb_request(request);
|
||||||
|
struct musb_request *r;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
struct musb *musb = musb_ep->musb;
|
struct musb *musb = musb_ep->musb;
|
||||||
@@ -1285,10 +1286,10 @@ static int musb_gadget_dequeue(struct usb_ep *ep, struct usb_request *request)
|
|||||||
spin_lock_irqsave(&musb->lock, flags);
|
spin_lock_irqsave(&musb->lock, flags);
|
||||||
|
|
||||||
list_for_each_entry(r, &musb_ep->req_list, list) {
|
list_for_each_entry(r, &musb_ep->req_list, list) {
|
||||||
if (r == request)
|
if (r == req)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (r != request) {
|
if (r != req) {
|
||||||
DBG(3, "request %p not queued to %s\n", request, ep->name);
|
DBG(3, "request %p not queued to %s\n", request, ep->name);
|
||||||
status = -EINVAL;
|
status = -EINVAL;
|
||||||
goto done;
|
goto done;
|
||||||
|
Reference in New Issue
Block a user