usb: gadget: dummy_hcd: allow to free requests on disabled endpoints
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Thu, 9 Feb 2012 08:24:59 +0000 (09:24 +0100)
committerFelipe Balbi <balbi@ti.com>
Fri, 4 May 2012 12:53:04 +0000 (15:53 +0300)
ep->desc is set to NULL on endpoint disable. That means once an endpoint
is disabled it is not possible to free requests. In my target gadget I
first disable endpoints to make sure I have no requests on the fly and
then free frequests. On dummy I am leaking memory here.
Since I can't imagine a reason why it should be a bad thing, lets allow
to free requests on disabled endpoints. On removal of composite the ep0
request is removed so lets allow that here as well.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/gadget/dummy_hcd.c

index a6dfd21641661c08df7a524850ee6ccf670a4f3e..af063cbca4c42871606b63ccf42f9b609ed19ba7 100644 (file)
@@ -595,14 +595,12 @@ static struct usb_request *dummy_alloc_request(struct usb_ep *_ep,
 
 static void dummy_free_request(struct usb_ep *_ep, struct usb_request *_req)
 {
-       struct dummy_ep         *ep;
        struct dummy_request    *req;
 
-       if (!_ep || !_req)
-               return;
-       ep = usb_ep_to_dummy_ep(_ep);
-       if (!ep->desc && _ep->name != ep0name)
+       if (!_ep || !_req) {
+               __WARN();
                return;
+       }
 
        req = usb_request_to_dummy_request(_req);
        WARN_ON(!list_empty(&req->queue));