aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorFelipe Balbi <balbi@ti.com>2011-02-28 03:44:50 -0500
committerFelipe Balbi <balbi@ti.com>2011-03-01 04:34:55 -0500
commit4cbbf084436caddeb815534df4ebaa018c970196 (patch)
treed7c94d931b0ef9109da136a4c44bda603d0d6ecb /drivers/usb
parentd105e74eff7f8197b4d8e104e347ffbc5c3989b8 (diff)
usb: musb: gadget: fix list_head usage
commit ad1adb89a0d9410345d573b6995a1fa9f9b7c74a (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>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/musb/musb_gadget.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index da8c93bfb6f..2a3aee4e108 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
@@ -1274,7 +1274,8 @@ cleanup:
1274static int musb_gadget_dequeue(struct usb_ep *ep, struct usb_request *request) 1274static int musb_gadget_dequeue(struct usb_ep *ep, struct usb_request *request)
1275{ 1275{
1276 struct musb_ep *musb_ep = to_musb_ep(ep); 1276 struct musb_ep *musb_ep = to_musb_ep(ep);
1277 struct usb_request *r; 1277 struct musb_request *req = to_musb_request(request);
1278 struct musb_request *r;
1278 unsigned long flags; 1279 unsigned long flags;
1279 int status = 0; 1280 int status = 0;
1280 struct musb *musb = musb_ep->musb; 1281 struct musb *musb = musb_ep->musb;
@@ -1285,10 +1286,10 @@ static int musb_gadget_dequeue(struct usb_ep *ep, struct usb_request *request)
1285 spin_lock_irqsave(&musb->lock, flags); 1286 spin_lock_irqsave(&musb->lock, flags);
1286 1287
1287 list_for_each_entry(r, &musb_ep->req_list, list) { 1288 list_for_each_entry(r, &musb_ep->req_list, list) {
1288 if (r == request) 1289 if (r == req)
1289 break; 1290 break;
1290 } 1291 }
1291 if (r != request) { 1292 if (r != req) {
1292 DBG(3, "request %p not queued to %s\n", request, ep->name); 1293 DBG(3, "request %p not queued to %s\n", request, ep->name);
1293 status = -EINVAL; 1294 status = -EINVAL;
1294 goto done; 1295 goto done;