diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2012-02-09 03:24:59 -0500 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2012-05-04 08:53:04 -0400 |
commit | f99987bb261ed80f645ed0acd13732922ca10138 (patch) | |
tree | 0f90fab857d5154d24d04a2abf13aab8527c9ac2 | |
parent | 2e87edf4922795f5e5e5be7934a36b6ff331022d (diff) |
usb: gadget: dummy_hcd: allow to free requests on disabled endpoints
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>
-rw-r--r-- | drivers/usb/gadget/dummy_hcd.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/usb/gadget/dummy_hcd.c b/drivers/usb/gadget/dummy_hcd.c index a6dfd2164166..af063cbca4c4 100644 --- a/drivers/usb/gadget/dummy_hcd.c +++ b/drivers/usb/gadget/dummy_hcd.c | |||
@@ -595,14 +595,12 @@ static struct usb_request *dummy_alloc_request(struct usb_ep *_ep, | |||
595 | 595 | ||
596 | static void dummy_free_request(struct usb_ep *_ep, struct usb_request *_req) | 596 | static void dummy_free_request(struct usb_ep *_ep, struct usb_request *_req) |
597 | { | 597 | { |
598 | struct dummy_ep *ep; | ||
599 | struct dummy_request *req; | 598 | struct dummy_request *req; |
600 | 599 | ||
601 | if (!_ep || !_req) | 600 | if (!_ep || !_req) { |
602 | return; | 601 | __WARN(); |
603 | ep = usb_ep_to_dummy_ep(_ep); | ||
604 | if (!ep->desc && _ep->name != ep0name) | ||
605 | return; | 602 | return; |
603 | } | ||
606 | 604 | ||
607 | req = usb_request_to_dummy_request(_req); | 605 | req = usb_request_to_dummy_request(_req); |
608 | WARN_ON(!list_empty(&req->queue)); | 606 | WARN_ON(!list_empty(&req->queue)); |