]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/usb/musb/musb_gadget.c
usb: musb: unmap reqs in musb_gadget_queue()'s error case
[karo-tx-linux.git] / drivers / usb / musb / musb_gadget.c
index 0414bc19d0095258ab5e646858ce342a740f92c8..96632f9e3eeb1cfb1d202676fc8092257590f62b 100644 (file)
@@ -1266,7 +1266,8 @@ static int musb_gadget_queue(struct usb_ep *ep, struct usb_request *req,
                dev_dbg(musb->controller, "req %p queued to %s while ep %s\n",
                                req, ep->name, "disabled");
                status = -ESHUTDOWN;
-               goto cleanup;
+               unmap_dma_buffer(request, musb);
+               goto unlock;
        }
 
        /* add request to the list */
@@ -1276,7 +1277,7 @@ static int musb_gadget_queue(struct usb_ep *ep, struct usb_request *req,
        if (!musb_ep->busy && &request->list == musb_ep->req_list.next)
                musb_ep_restart(musb, request);
 
-cleanup:
+unlock:
        spin_unlock_irqrestore(&musb->lock, lockflags);
        return status;
 }